function trim(str,options){
var string = str.replace(/^\s\s*/, ''),
ws = /\s/,
i = str.length,
j = -1;
if(options==="begin"){while(ws.test(string.charAt(++j)));return string.slice(j,i);}
if(options==="end"){while(ws.test(string.charAt(--i)));return string.slice(j+1,i+1);}
while(ws.test(string.charAt(--i)));while(ws.test(string.charAt(++j)));
return string.slice(j, i + 1);
}
此函数是您在C#中找到的Trim()方法的实现。
我添加了在开头和结尾都删除withspace的选项。问题是,我无法在演示中使用它。
我所做的是:
var a = " zareaerar arzare ";
var b = "aezze azeze a ";
var c = "azrazza rzrzrzrp"
var d = " aezzaeazeazeaz azez ";
document.write('<p style="backround:#ff0000">',trim(a,"begin"),'</p>','<br />');
document.write('<p style="backround:#ff0000">',trim(b,"begin"),'</p>','<br />');
document.write('<p style="backround:#ff0000">',trim(c,"begin"),'</p>','<br />');
document.write('<p style="backround:#ff0000">',trim(d,"begin"),'</p>','<br />');
首先,没有出现背景色,字符串似乎也松开了字符串中间的空格......
这仅适用于用户输入吗?这些天字符串会自动修剪吗?
答案 0 :(得分:9)
1)你没有看到背景,因为你有一个拼写错误:backround
而不是background
2)在HTML中,对于多个空格没有意义。如果要在段落中的单词之间插入不间断的空格,则需要使用
。
请注意一系列白色空格 源文档中的单词之间 可能导致完全不同 渲染的字间距(除了 PRE元素的情况)。的在 特别是,用户代理应该 崩溃输入空白序列 在产生输出词间时 空间即可。这可以而且应该完成 即使没有语言 信息(来自lang属性, HTTP“Content-Language”标头 字段(见[RFC2616],第14.12节), 用户代理设置等。)。
PRE元素用于 预先格式化的文本,白色空间 很重要。
答案 1 :(得分:3)
我知道这不是您问题的答案,但为什么您的trim
功能如此复杂?
你可以这样做:
function trim(str, option) {
if (option === "begin") return str.replace(/^\s+/,"");
if (option === "end") return str.replace(/\s+$/,"");
return str.replace(/^\s+|\s+$/g,"");
}
如果您正在使用正则表达式测试,您也可以使用replace
方法替换所有空格。
注意:代码改编自here。