首頁 > 後端開發 > php教程 > 看到PHP的一道面试题, 做了上, 不知道还有没好点方法

看到PHP的一道面试题, 做了上, 不知道还有没好点方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-13 10:55:46
原創
693 人瀏覽過

看到PHP的一道面试题, 做了下, 不知道还有没好点方法
题目如下,
类似这样的aaasssddd字符串,写个函数CutStr($str,$max)实现截取:
1)如果$max大于$str的长度则返回$str
2)不包含在长度计算范围。
例:
如果CutStr("aaasssddd",6) 则返回aaasss.
如果CutStr("aaasssddd",4) 则返回aaas,不包含标签

我的第一反应就是正则, 然后就...

var str = "aaa<em>sss</em>ddd";function cutStr(str, max) {    // 首先把<em>和</em>先给剔除, 然后记录他们的位置    var reg = new RegExp("(.*?)<em>(.*?)</em>(.*?)");     var emSub = str.indexOf("<em>");    var em2Sub = str.indexOf("</em>");    var newstr = str.replace(reg, "$1$2$3");    // 如果不是数字或是负数, 或者大于字符长度, 直接返回原字符    if (!/^\d+$/.test(max) || max >= newstr.length) return str;     newstr = newstr.substring(0, max);    if (max <= emSub) { //小于三        return newstr;    } else if (max <= em2Sub - 4 && max > emSub) { // 大于三, 小于六时(注: -4 是为了减去第一个<em>占去的位置)        var tempReg = new RegExp("(\\w{" + emSub + "})(\\w*?)");        return newstr.replace(tempReg, "$1<em>$2");    } else { // 大于六        var tempReg = new RegExp("(\\w{" + emSub + "})(\\w{" + (em2Sub - emSub - 4) + "}?)(\\w*?)");        return newstr.replace(tempReg, "$1<em>$2</em>$3");    }}alert(cutStr(str, 7));?
登入後複製


觉得这个方法好笨, 有什么别的好点的方法吗?

想到了,, 原来这个这么简单,, 我把它想复杂了...

var str = "aaa<em>sss</em>ddd";    function cutStr(str, max) {      var emSub = str.indexOf("<em>");      var em2Sub = str.indexOf("</em>");      // 如果不是数字或是负数, 或者大于字符长度, 直接返回原字符      if (!/^\d+$/.test(max) || max >= str.length - 9) return str;     else if(max > em2Sub-4) return str.substring(0, max + 9);    else if(max > emSub) return str.substring(0, max + 4);    else return str.substring(0, max);}    alert(cutStr(str, 7));  ?
登入後複製

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
$value -> 成績 = $value -> 成績 -> 姓名;
來自於 1970-01-01 08:00:00
0
0
0
輸入<html><>後面是怎麼變成<html></html>的
來自於 1970-01-01 08:00:00
0
0
0
javascript - js中map實作中 var len = O.length >>> 0;
來自於 1970-01-01 08:00:00
0
0
0
<title></title> 這倆代表啥
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板