【问题标题】:Trying to parse a string delimited by | and I want to ignore " | | | | " but it does not work试图解析由 | 分隔的字符串我想忽略“ | | | | ”但它不起作用
【发布时间】:2013-09-24 21:12:03
【问题描述】:

所以我正在解析一个字符串,并使用 | 对其进行标记。作为分隔符。但是,我想确保我不解析空格(任何数量)并简单地忽略它们。但是由于某种原因,没有什么是完全有效的。一些空格逃脱了检查并被打印出来。这是我的代码:

white = value;
white.replace(/(^\s+|\s+$)/g, '');
if(white != null && white != '' && white != ' '){
   console.log("IT IS NOT EMPTY");
}else{
   console.log("IT IS EMPTY");
}

我看不懂。

这些工作:

" | "
" | | | "

但是

" |   | | | " 

不起作用...

有什么建议吗?

【问题讨论】:

    标签: javascript regex parsing whitespace


    【解决方案1】:

    .replace 不转换字符串,它返回新字符串。

    white = white.replace(/^\s+|\s+$/g,"");
    

    【讨论】:

    • 这将从字符串的开头和字符串的结尾删除的空格,而不是|字符之间的空格。
    • 我的目标是确定是否 | | | | |仅包含空格。或其中任何一个部分仅由空格组成,因此“dasdsa| |dasds | |”将评估为空 3 次。
    【解决方案2】:

    如果您的目标是根据| 将字符串分成几部分,忽略它之前或之后的空格,那么:

    var parts = value.split(/\s*\|\s*/);
    

    该表达式表示:拆分可选空格,后跟文字 |(您必须在正则表达式中对其进行转义),然后是可选空格。

    如果您的目标是从字符串中删除与 | 相邻的空格,则:

    white = value.replace(/(?:\s+\|)|(?:\|\s+)/g, "|");
    

    那个正则表达式说:如果你发现一个空格序列后跟一个文字|一个空格序列后面一个文字|,替换它们(包括| ) 与单个 |。表达式中未转义的| 是“交替”,意思是“我两边的任何一个东西”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-21
      • 2012-01-08
      • 2021-09-09
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2011-12-10
      • 2019-02-06
      相关资源
      最近更新 更多