我正在尝试修剪我从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;
}
答案 0 :(得分:6)
变为non-break-space character,\u00a0
。 JavaScript的String#trim
是supposed to remove those,但历史上浏览器实现在这方面有点麻烦。我认为这些问题已在现代问题上得到解决,但是......
如果您遇到了无法正确实现的浏览器,您可以使用正则表达式解决这个问题:
text = editorData.replace(/(?:^[\s\u00a0]+)|(?:[\s\u00a0]+$)/g, '');
这就是说在开头和结尾都没有替换所有空格或非空格字符。
但是看过你的评论:
当我单独运行这段代码时,它对我来说很好。但在应用中它的失败。
......可能不是它。
或者,您可以在转换为文字前删除
标记:
html = html.replace(/(?:^(?: )+)|(?:(?: )+$)/g, '');
var editorData = $('<div/>').html(html).text();
text = editorData.trim();
在将标记转换为文本之前,它会删除开头或结尾的所有
。
答案 1 :(得分:1)
从字符串中修剪不间断空格的最简单方法是
html.replace(/ /g,' ').trim()
答案 2 :(得分:1)
如果您使用的是jQuery,可以使用jQuery.trim()
函数从提供的字符串的开头和结尾删除所有换行符,空格(包括不间断空格)和制表符。 source
答案 3 :(得分:0)
这些都不适合我。我想要做的是仅从字符串的开头或结尾而不是从中间删除 " "
。所以我的建议是什么。
let ingredients = str.replace(/ /g, ' ');
ingredients = this.ingredients.trim();
ingredients = this.ingredients.replace(/\s/g, ' ');
var txt = 'aa cc ';
var result = txt.replace(/ /g, ' ');
result = result.trim();
result = result.replace(/\s/g, ' ');
console.log(result);