繁体   English   中英

Javascript按开始和结尾切割字符串并存储在数组中

[英]Javascript cut string by begin and end and store in array

我需要做这样的算法:

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的解决方案

看来您想按模式$$ ... $$分割; 您可以使用/(\\$\\$.*?\\$\\$)/ ; 为了使模式保留在结果中,可以将其设为捕获组,也可以使其成为惰性( ),以使其以匹配的最短长度模式进行分割:

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

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

String.split()

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

 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> 

但是,如果我建议的话,变量可以处理这种类型的操作,而无需所有麻烦。

是的,这可以通过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]

暂无
暂无

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

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