【问题标题】:Conditional splitting in Javascript [duplicate]Javascript中的条件拆分[重复]
【发布时间】:2019-02-03 11:58:32
【问题描述】:

我需要在 javascript 中拆分一个字符串(没有 jquery)。 这基本上是从 csv 收到的。 所以,我有一个字符串,

string = '"abc, xyz, mno","lmn, pqr, bcd, jkl"';

注意:引用部分的逗号数量不固定,例如"abc, xyz, mno" 也可以是"abc, xyz, mno, klm, ...""lmn, pqr, bcd, jkl" 可能只是"lmn";即根本没有逗号。

我想把它拆分成

str1 = 'abc, xyz, mno';
str2 = 'lmn, pqr, bcd, jkl';

由于逗号数量未定义,我无法使用 string.split(","); 执行此操作。

提前感谢您的帮助。

【问题讨论】:

  • 为什么不能用string.split('","');,然后用string.replace("\"", "");去掉多余的"
  • string.split(",") 倾向于将字符串拆分为所有逗号。所以当我在 '"abc, xyz, mno","lmn, pqr, bcd, jkl"' 上使用 string.split() 时,它会返回 7 个部分而不是 2 个 :(
  • 我更正了..我的意思是拆分引号和逗号
  • 为什么不在 ," 上拆分?
  • JSON.parse("[" + '"abc, xyz, mno","lmn, pqr, bcd, jkl"' + "]") 工作吗?

标签: javascript


【解决方案1】:

您可以在String#split 方法中指定多个字符:

str.split('","')

演示:

let str = '"abc, xyz, mno","lmn, pqr, bcd, jkl"';

let result = str.split('","')
console.log(result);

如果你想去掉引号,只需添加一个

.map(s => s.replace('"',''))

演示:

let str = '"abc, xyz, mno","lmn, pqr, bcd, jkl"';

let result = str.split('","').map(s => s.replace('"',''));
console.log(result);

【讨论】:

  • 感谢您的回答@Zenoo,如果字符串有引号,它确实有效。由于引号是可选的,因此我无法使用此解决方案。但是,我在提供的重复链接上找到了解决方案。 :)
【解决方案2】:

这可能最好使用正则表达式来完成。但是,由于它们不是我最擅长的领域,以下是结合使用 String.split()Array.map()String.replace() 的方法:

let input = '"abc, xyz, mno","lmn, pqr, bcd, jkl"';

// Split where "," is found
// Create a new array that is a copy of the original
// but with \" removed from the elements
let output = input.split('","').map(s => s.replace('\"',''));

console.log(output);

【讨论】:

  • 感谢您的回答@Scott,如果字符串有引号,它确实有效。由于引号是可选的,因此我无法使用此解决方案。但是,我在提供的重复链接上找到了解决方案。 :)
猜你喜欢
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
相关资源
最近更新 更多