在javascript中修剪值

PSR*_*PSR 5 javascript jquery trim kendo-editor

我试图修剪我从剑道编辑器得到的文本.

var html = "  T  "; // This sample text I get from Kendo editor
            console.log("Actual :" + html + ":");
            var text = "";
            try {
                // html decode
                var editorData = $('<div/>').html(html).text();
                text = editorData.trim();                    
                console.log("After trim :" + text + ":");
            }
            catch (e) {
                console.log("exception");
                text = html;
            }
Run Code Online (Sandbox Code Playgroud)

此代码位于单独的js文件中(从typescript生成).当页面加载时,修剪不起作用.但是,当我在开发人员工具控制台窗口中运行相同的代码时,它的工 为什么不工作?

添加打字稿代码

 const html: string = $(selector).data("kendoEditor").value();
        console.log("Actual :" + html + ":");
        let text: string = "";
        try {
            // html decode
            var editorData = $('<div/>').html(html).text();
            text = editorData.trim();
            console.log("After trim :" + text + ":");
        }
        catch (e) {
            console.log("exception");
            text = html;
        }
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 7

&nbsp;成为不断裂空格字符,\u00a0.JavaScript的String#trim应该消除这些,但历史上的浏览器实现已经在这方面有点马车.我认为这些问题已在现代问题上得到解决,但......

如果您遇到的浏览器没有正确实现它,您可以使用正则表达式解决这个问题:

text = editorData.replace(/(?:^[\s\u00a0]+)|(?:[\s\u00a0]+$)/g, '');
Run Code Online (Sandbox Code Playgroud)

这表示在开头和结尾都没有替换所有空格或非空格字符.

但看到你的评论:

当我单独运行这段代码时,它对我来说很好.但在应用中它失败了.

......可能不是这样.

或者,您可以&nbsp;在转换为文本之前删除标记:

html = html.replace(/(?:^(?:&nbsp;)+)|(?:(?:&nbsp;)+$)/g, '');
var editorData = $('<div/>').html(html).text();
text = editorData.trim();    
Run Code Online (Sandbox Code Playgroud)

这会&nbsp;在将标记转换为文本之前删除开头或结尾处的任何s.

  • 也许这位贬低者会分享为什么他们认为这"无用"? (2认同)
  • @BekimBacaj:你显然没有阅读(或至少理解)我上面的答案,显然还没有理解你的答案的评论.好吧,不幸的是,我无能为力. (2认同)
  • @BekimBacaj:大声哭泣.只是*阅读规范*.我把它与这个目的联系在一起.从`trim`链接:*"设T是一个字符串值,它是S的副本,同时删除了前导和尾随空格.空格的定义是WhiteSpace和LineTerminator的结合."*来自表32链接:*"ECMAScript空格代码点列于表32:... U + 00A0 NO-BREAK SPACE <NBSP> ..."*因此:`trim`应该删除无休息空间.并且*在没有损坏的浏览器上执行*.正如我上面所说. (2认同)
  • @Bekim:引用你的话:"错了!" 这是您的另一个规范:https://www.w3.org/TR/html5/syntax.html#named-character-references,它非常清楚地表明`&nbsp;`是U + 00A0.并证明它在现实世界中确实是真的:https://jsfiddle.net/nyd3yb0z/而且,我已经完成了.如果您觉得需要发布更多FUD,请引用可靠的参考资料. (2认同)
  • @Bekim:什么彻底废话. (2认同)

小智 5

从字符串中修剪不间断空格的最简单方法是

html.replace(/&nbsp;/g,' ').trim()
Run Code Online (Sandbox Code Playgroud)