繁体   English   中英

无法使Javascript函数在演示中工作

[英]Can't get Javascript function to work in a demo

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()方法的实现。

我在开头和结尾都添加了删除空格的选项。 问题是,我无法在演示中使用它。

我所做的是:

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

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

这仅适用于用户输入吗? 这些天会自动修剪琴弦吗?

1)因为有错字,所以您看不到背景:使用backround而非background

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

参考(W3规格)

请注意,源文档中单词之间的空白序列可能会导致呈现的单词间间距完全不同(PRE元素除外)。 特别是,用户代理在产生输出词间空间时应折叠输入空白序列 即使没有语言信息(来自lang属性,HTTP“ Content-Language”标头字段(请参见[RFC2616],第14.12节),用户代理设置等),也可以并且应该做到这一点。

PRE元素用于预格式化的文本,其中空格很大。

我知道这不是您问题的答案,但是为什么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,"");
}

如果仍然使用正则表达式测试,则最好将所有空白replacereplace方法。

注意:代码从此处改编。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM