繁体   English   中英

如何从单词字符,Javascript中清除字符串

[英]How to clean string from word characters, Javascript

我正在尝试清理已从单词文本转换而来的字符串,但我一直坚持删除特殊字符“…”

通过单击“清理”按钮,脚本将删除所有圆点和仅一个特殊字符,但是我需要删除所有圆点

我的错误在哪里?

这里是我的代码和plunker与斗争

    $scope.string = "My transformed string ………….........…...."

 $scope.removeDots = function () {
        var em = document.getElementsByTagName('em');
        var reg = /\./g;
        var hellip = /…/g

        angular.forEach(em, function (item) {

            if(item.innerText.match(reg)){
                 item.innerText = process(item.innerText)
            } 
            if (item.innerText.match(hellip)){
              item.innerText = item.innerText.replace("…", "")
            }
        });
    };

    function process( str ) {
        return str.replace( /^([^.]*\.)(.*)$/, function ( a, b, c ) {
            return b + c.replace( /\./g, '' );
        });
    }

这里有一些问题,但是只要在处理期间和… process中将代码简化为单个正则表达式替换,就可以解决所有问题… 实体:

 $scope.removeDots = function () {
        var em = document.getElementsByTagName('em');
        angular.forEach(em, function (item) {
              item.innerText = process(item.innerText)
        });
    };

    function process( str ) {
        return str.replace( /\.|…/g, '');
    }
});

柱塞演示

您替换每次出现的. 进行process ,但只能替换… 一旦。

我不明白你为什么不做.replace(/(\\.|…)/g, '') ; g修饰符可确保替换所有匹配项。

您可以通过先替换出现的…来进行这两种替换… 用一个点(因为这可能是您找到的唯一东西),然后将任何点序列替换为一个:

 function process( str ) { return str.replace(/…/g, '.').replace(/\\.\\.+/g, '.'); } var test="My transformed string ………….........…...."; console.log(process(test)); 

您的代码未替换所有内容的原因之一是,您使用字符串作为find参数,这只会导致一次替换。 通过使用正则表达式作为find参数,可以获得g修饰符的效果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM