首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到一个位置来拆分不属于<br>的字符串。

找到一个位置来拆分不属于<br>的字符串。
EN

Code Review用户
提问于 2016-08-17 13:54:40
回答 1查看 143关注 0票数 1

我有一个“读更多”的角度指令,复制自:https://github.com/doukasd/AngularJS-Components/blob/master/dd-text-collapse/dd-text-collapse.js

我的一些文本中已经可以包含<br>标记(我只允许使用<br>),所以我只需要处理that...below,这只是我为此目的编写的额外代码。

对于看似微不足道的事情,它似乎很漫长吗?

代码语言:javascript
复制
    //---All this to not break upon <br> --
    if (text.includes('<br>')) {
        var charAtMaxLength = text.charAt(maxLength).toLowerCase();
        //console.log(charAtMaxLength);
        switch (charAtMaxLength) {
            case '<':
                if (text.charAt(maxLength + 3).toLowerCase() === '>') {
                    //console.log('Decrease maxLength by 1');
                    maxLength -= 1;
                }
                break;
            case 'b':
                if (text.charAt(maxLength - 1).toLowerCase() === '<') {
                    //console.log('Decrease maxLength by 2');
                    maxLength -= 2;
                }
                break;
            case 'r':
                if (text.charAt(maxLength - 2).toLowerCase() === '<') {
                    //console.log('Decrease maxLength by 3');
                    maxLength -= 3;
                }
                break;
            case '>':
                if (text.charAt(maxLength - 3).toLowerCase() === '<') {
                    //console.log('Increase maxLength by 1');
                    maxLength += 1;
                }
                break;
            default:
                //Do nothing.
                break;
        }
        //console.log(charAtMaxLength);
    }
    //--------------------------------------
EN

回答 1

Code Review用户

回答已采纳

发布于 2016-08-17 16:31:39

您想要检查您匹配的字母是否是<br>的一部分。但你在做一项奇怪的检查。里面有虫子。

假设我们测试:

ad

我们说maxLength1。你不会破坏<bc>的。为了对此进行干燥测试:

代码语言:javascript
复制
text.includes('<br>') # true
text.charAt(maxLength).toLowerCase() # '<'
switch ('<')
case '<':
text.charAt(maxLength + 3).toLowerCase() === '>' # true
maxLength -= 1 # maxLength = 0

相反,您可以使用、indexOfslicelength来检查是否不允许使用文本。这使得您可以轻松地更改要删除的内容,并对其进行扩展。却比你拥有的要小得多。

  1. 用小写字母,charAt
  2. 在remove字符串中找到indexof it。
  3. 将start设置为maxLength减去index
  4. 检查index是否在删除字符串中,并检查从开始到开始的文本的slice加上remove字符串length是否是删除字符串。
  5. 如果是,则将maxLength更改为start - 1

或者在JavaScript中:

代码语言:javascript
复制
var text = 'a<br>d<br>';
var remove = '<br>';
var maxLength = 4;

var char = text.charAt(maxLength).toLowerCase();
var index = remove.indexOf(char);
var start = maxLength - index;
if (index != -1 && text.slice(start, start + remove.length).toLowerCase() == remove) {
    maxLength = start - 1;
}
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/138942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档