Trim   javascript 中的值
Trim   values in javascript
我正在尝试 trim 我从 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 文件中(从打字稿生成)。当页面加载时,trimming 不起作用。但是当我 运行 开发者工具控制台中的相同代码 window 时,它的工作。
为什么它不起作用?
添加打字稿代码
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;
}
变成了 non-break-space character, \u00a0
. JavaScript's String#trim
is supposed to remove those,但从历史上看,浏览器的实现在这方面有点问题。我以为这些问题在现代已经解决了,但是...
如果你运行浏览器没有正确实现它,你可以使用正则表达式解决这个问题:
text = editorData.replace(/(?:^[\s\u00a0]+)|(?:[\s\u00a0]+$)/g, '');
这表示要替换开头和结尾的所有白色space 或非中断-space 字符。
但是看了你的评论:
When I run this piece of code separately, it is working fine for me. But in application its failing.
...可能不是这样。
或者,您可以在转换为文本之前删除
标记:
html = html.replace(/(?:^(?: )+)|(?:(?: )+$)/g, '');
var editorData = $('<div/>').html(html).text();
text = editorData.trim();
这会在将标记转换为文本之前删除开头或结尾的所有
。
从字符串中 trim 不间断空格的最简单方法是
html.replace(/ /g,' ').trim()
如果您正在使用 jQuery,您可以使用 jQuery.trim()
function removes all newlines, spaces (including non-breaking spaces), and tabs from the beginning and end of the supplied string. source
None 个适合我。我想要做的是只从字符串的开头或结尾而不是从中间删除 " "
。那么我的建议是。
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);
这个实施对我来说是成功的
s=s.replaceAll(' ', ' ').replaceAll('<br>', ' ').trim();
我正在尝试 trim 我从 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 文件中(从打字稿生成)。当页面加载时,trimming 不起作用。但是当我 运行 开发者工具控制台中的相同代码 window 时,它的工作。 为什么它不起作用?
添加打字稿代码
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;
}
变成了 non-break-space character, \u00a0
. JavaScript's String#trim
is supposed to remove those,但从历史上看,浏览器的实现在这方面有点问题。我以为这些问题在现代已经解决了,但是...
如果你运行浏览器没有正确实现它,你可以使用正则表达式解决这个问题:
text = editorData.replace(/(?:^[\s\u00a0]+)|(?:[\s\u00a0]+$)/g, '');
这表示要替换开头和结尾的所有白色space 或非中断-space 字符。
但是看了你的评论:
When I run this piece of code separately, it is working fine for me. But in application its failing.
...可能不是这样。
或者,您可以在转换为文本之前删除
标记:
html = html.replace(/(?:^(?: )+)|(?:(?: )+$)/g, '');
var editorData = $('<div/>').html(html).text();
text = editorData.trim();
这会在将标记转换为文本之前删除开头或结尾的所有
。
从字符串中 trim 不间断空格的最简单方法是
html.replace(/ /g,' ').trim()
如果您正在使用 jQuery,您可以使用 jQuery.trim()
function removes all newlines, spaces (including non-breaking spaces), and tabs from the beginning and end of the supplied string. source
None 个适合我。我想要做的是只从字符串的开头或结尾而不是从中间删除 " "
。那么我的建议是。
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);
这个实施对我来说是成功的
s=s.replaceAll(' ', ' ').replaceAll('<br>', ' ').trim();