【问题标题】:JavaScript Split around curly bracesJavaScript 围绕花括号拆分
【发布时间】:2015-06-01 14:29:52
【问题描述】:

我在字符串变量中有一个字符串格式:

"{0} Hello World {1}"

我需要把它拆分成这样的:

"{0}","Hello World","{1}"

我已经尽力做到最好的是:

"","0"," Hello World ","1",""

我已尝试将 Regex Split Around Curly Braces 中的示例转换为 但它不起作用,那里的拆分要么删除了所有内容,要么保留了空格并删除了{}

所以,我的问题与另一篇文章中的问题相同,如何保留大括号 {} 并删除它们前后的空格而不是单词之间的空格?

【问题讨论】:

  • split /({\d+})/。 () 强制 javascript 将你拆分的东西作为拆分数据的一部分返回。

标签: javascript regex string split


【解决方案1】:

你可以使用Split with a regex having capturing group(s):

如果分隔符是一个包含捕获的正则表达式 括号,然后每次匹配分隔符,结果 (包括任何未定义的结果)的捕获括号是 拼接到输出数组中。

var re = /\s*(\{[0-9]+\})\s*/g;
var splt = "{0} Hello World {1}".split(re).filter(Boolean);
alert(splt);

正则表达式解释:

  • \s* - 任意数量的空格
  • (\{[0-9]+\}) - 匹配的捕获组:
    • \{ - 文字 {
    • [0-9]+ - 1 位或多位数字
    • \} - 文字 }
  • \s* - 任意数量的空格

filter 可以帮助去除数组中的空元素。

filter() 为每个元素调用一次提供的回调函数 一个数组,并构造一个包含所有值的新数组 回调返回一个真值或一个强制为true 的值。 回调仅针对已分配的数组索引调用 价值观;它不会为已删除或已删除的索引调用 从未被赋值。

未通过的数组元素 回调测试被简单地跳过,并且不包含在新的 数组。

【讨论】:

  • 哇哦 :D 非常感谢!穿着完美:D
【解决方案2】:

您可以使用以下内容:

\s*({\d+})\s*

JS代码:

var regex = /\s*({\d+})\s*/g;
var split_string = "{0} Hello World {1}".split(regex).filter(Boolean);
alert(split_string);

【讨论】:

    【解决方案3】:

    你可以这样做:

    var myregexp = /({.*?})(.*?)({.*?})/im;
    var match = myregexp.exec(subject);
       if (match != null) 
       {
         result1 = match[1];
         result2 = match[2];
         result3 = match[3];
       }
    

    【讨论】:

      【解决方案4】:

      您可以根据需要过滤掉空字符串:

      var s = "{0} Hello World {1}";
      s.split(/({\d+})/).filter(Boolean);
      

      返回

      ["{0}", " Hello World ", "{1}"]
      

      【讨论】:

        【解决方案5】:
        var myString = "{0} Hello World {1}"
        var splits = myString.split(/\s?{\d}\s?/);
        

        这将返回 ["", "Hello World", ""],

        var count = 0;
        for (var i=0; i< splits.length; i++) {
            if (splits[i] === "") {
                splits[i] = "{" + count + "}";
                count++;
            }
        }
        

        现在 splits 将拥有您所需要的。

        【讨论】:

          猜你喜欢
          • 2016-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-13
          相关资源
          最近更新 更多