【问题标题】:String into multiple string in an array将字符串转换为数组中的多个字符串
【发布时间】:2020-06-06 08:09:52
【问题描述】:

我没有长时间编码,遇到了我似乎无法弄清楚的第一个问题。

我有一个字符串"XX|Y1234$ZT|QW4567" 我需要同时删除$| 并将其推入像['XX', 'Y1234', 'ZT', 'QW4567'] 这样的数组中。

我尝试过以各种我喜欢的方式使用.replace.split

 var array = "XX|Y1234$ZT|QW4567"
 var array2 = [];

 array = array.split("$");

 for(i = o; i <array.length; i++)    
   var loopedArray = array[i].split("|")
   loopedArray.push(array2);        
 } 

我尝试了其他几件事,但我需要一段时间才能将它们全部放下。

【问题讨论】:

  • 注意你的代码,你的for循环没有{(左大括号)但是有一个}(右大括号),这会导致问题。还有i = o 你不是说var i = 0 吗?此外,array2 是一个您永远不会修改的空数组,将其推入loopedArray 是没有逻辑的

标签: javascript arrays string replace split


【解决方案1】:

您可以将正则表达式传递给.split()https://regexr.com/ 是处理正则表达式的好工具。

// Below line returns this array ["XX", "Y1234", "ZT", "QW4567"]
// Splits by $ and |
"XX|Y1234$ZT|QW4567".split(/\$|\|/g); 

【讨论】:

  • 我猜,.split(/[\$\|]/g) 可以更好地扩展,当有很多分隔符时,无论多么赞成
  • @YevgenGorbunkov Tipp:您甚至不必在字符类中转义 |$。由于我们不使用正则表达式来单独匹配块,因此也不需要g-match-all-flag。 .split(/[|$]/) 应该足够了。但我同意你最初的声明:这应该更快。
【解决方案2】:

你可以这样做:

"XX|Y1234$ZT|QW4567".replace('$','|').split('|')

它将产生以下输出:

["XX", "Y1234", "ZT", "QW4567"]

【讨论】:

  • 效果很好。这是一个简单的好答案,谢谢您的帮助。
【解决方案3】:

您的代码 sn-p 很接近,但您在 push 语句中弄乱了变量。

var array = "XX|Y1234$ZT|QW4567"
var array2 = [];

array = array.split("$");

for (i = 0; i < array.length; i++) {
  var loopedArray = array[i].split("|")
  array2.push(loopedArray);
}
array2 = array2.flat();

console.log(array2);

但是,使用flatMap 可以更简洁地重写它。还要注意使用let 代替var 和单引号' 代替双引号"

let array = 'XX|Y1234$ZT|QW4567'
let array2 = array
  .split('$')
  .flatMap(arrayI => arrayI.split('|'));

console.log(array2);

最后,split 在使用正则表达式时已经支持多个分隔符:

let array = 'XX|Y1234$ZT|QW4567'
let array2 = array.split(/[$|]/);

console.log(array2);

【讨论】:

    【解决方案4】:

    如果您使用两个参数|$ 调用拆分,您将得到一个由给定字符拆分的强数组。

    var array = "XX|Y1234$ZT|QW4567";
    var splittedStrings = array.Split('|','$');
    foreach(var singelString in splittedStrings){
       Console.WriteLine(singleString);
    }
    
    

    输出是

    XX
    Y1234
    ZT
    QW4567
    
    

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 2011-06-18
      • 1970-01-01
      • 2017-11-27
      • 2018-03-08
      • 1970-01-01
      相关资源
      最近更新 更多