无法在演示中使用Javascript函数

时间:2009-08-18 10:29:23

标签: javascript

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 />');

首先,没有出现背景色,字符串似乎也松开了字符串中间的空格......

这仅适用于用户输入吗?这些天字符串会自动修剪吗?

2 个答案:

答案 0 :(得分:9)

1)你没有看到背景,因为你有一个拼写错误:backround而不是background

2)在HTML中,对于多个空格没有意义。如果要在段落中的单词之间插入不间断的空格,则需要使用&nbsp;

Reference (W3 spec)

  

请注意一系列白色空格   源文档中的单词之间   可能导致完全不同   渲染的字间距(除了   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