在javascript中修剪值

时间:2016-05-23 09:32:17

标签: javascript jquery trim kendo-editor

我正在尝试修剪我从kendo编辑器获得的文本。

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;
            }

此代码位于单独的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;
        }

4 个答案:

答案 0 :(得分:6)

&nbsp;变为non-break-space character\u00a0。 JavaScript的String#trimsupposed to remove those,但历史上浏览器实现在这方面有点麻烦。我认为这些问题已在现代问题上得到解决,但是......

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

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

这就是说在开头和结尾都没有替换所有空格或非空格字符。

但是看过你的评论:

  

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

......可能不是它。

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

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

在将标记转换为文本之前,它会删除开头或结尾的所有&nbsp;

答案 1 :(得分:1)

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

html.replace(/&nbsp;/g,' ').trim()

答案 2 :(得分:1)

如果您使用的是jQuery,可以使用jQuery.trim()

  

函数从提供的字符串的开头和结尾删除所有换行符,空格(包括不间断空格)和制表符。 source

答案 3 :(得分:0)

这些都不适合我。我想要做的是仅从字符串的开头或结尾而不是从中间删除 "&nbsp;"。所以我的建议是什么。

  let ingredients = str.replace(/&nbsp;/g, ' ');
  ingredients = this.ingredients.trim();
  ingredients = this.ingredients.replace(/\s/g, '&nbsp;');

var txt = 'aa&nbsp;&nbsp;cc&nbsp; &nbsp; ';
var result = txt.replace(/&nbsp;/g, ' ');
result = result.trim();
result = result.replace(/\s/g, '&nbsp;');
console.log(result);