【问题标题】:Javascript cut string by begin and end and store in arrayJavascript按开始和结束剪切字符串并存储在数组中
【发布时间】:2017-12-04 14:11:09
【问题描述】:

我需要一个这样的算法:

var example = "Hello $$user$$ your real name is $$realname$$. Have a good day"
Output --> ["Hello ", "$$user$$", " your real name is ", "$$realname$$", ". Have a good day"]

因此,用选定的字符分割部分并将它们放在一个字符串数组中。有人可以帮我吗?

我正在寻找使用 JavaScript/jQuery 的解决方案

【问题讨论】:

  • 请发布您到目前为止所尝试的内容。
  • 你有你的代码示例吗?有许多预构建的函数可以让您在 Javascript 中查找 Slice()、Substring()、Substr()、length() 等。

标签: javascript jquery arrays string split


【解决方案1】:

您似乎想按模式拆分 $$...$$;你可以使用/(\$\$.*?\$\$)/;要将模式保留在结果中,您可以将其设为捕获组,并使其变得惰性 (?),以便它将以匹配的最短长度模式拆分:

example.split(/(\$\$.*?\$\$)/)

#[ 'Hello ',
#  '$$user$$',
#  ' your real name is ',
#  '$$realname$$',
#  '. Have a good day' ]

【讨论】:

    【解决方案2】:

    是的,这可以通过 JavaScript 本身实现...有点棘手,但是是的。

    var strings = [], tokens = [];
    var str = "Hello $$user$$ your real name is $$realname$$. Have a good day".replace(/\$\$(.*?)\$\$/g, "\$\$TOKEN$1\$\$").split("$");
    for (var i = 0; i < str.length; i++) {
      if (str[i].indexOf("TOKEN") === 0) {
        // This is a token.
        tokens.push(str[i].replace("TOKEN", ""));
      } else {
        strings.push(str[i]);
      }
    }
    str = str.map(function (v) {
      if (v.indexOf("TOKEN") === 0)
        return "$$" + v.replace("TOKEN", "") + "$$";
      return v;
    });
    console.log(str);
    console.log(strings);
    console.log(tokens);

    上面的代码会将所有内容拆分为令牌。最重要的是,它还将字符串和标记分开。以上根据您的要求给出:

    [
      "Hello ",
      "$$user$$",
      " your real name is ",
      "$$realname$$",
      ". Have a good day"
    ]
    

    请注意,没有像 {value, value} 这样的东西,只有 [value, value]

    【讨论】:

      【解决方案3】:

      String.split()

      split() 方法通过将字符串拆分为子字符串,将字符串对象拆分为字符串数组。

      var example = "Hello $$user$$ your real name is $$realname$$. Have a good day";
      var exSplit = example.split("$$");
      var userIdx = exSplit.indexOf("user");
      var nameIdx = exSplit.indexOf("realname");
      document.querySelector(".user").innerHTML = exSplit[userIdx];
      document.querySelector(".name").innerHTML = exSplit[nameIdx];
      <div class="user"></div>
      <div class="name"></div>

      不过,如果我可以建议的话,变量可以轻松处理这种类型的操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-14
        • 2022-01-21
        • 2021-11-06
        • 1970-01-01
        • 2013-02-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多