【问题标题】:How to split comma, semicolon and comma separated phrases with semicolons around?如何用分号分隔逗号,分号和逗号分隔的短语?
【发布时间】:2019-08-19 13:16:40
【问题描述】:

如何用分号分割逗号、分号和逗号分隔的短语,它应该将分号与逗号之间的任何内容作为分隔符处理,但在功能上也只能将逗号和分号分隔在一起?

字串:

var words = "apple;banana;apple, banana;fruit"

由 , 和 ; 分隔的正则表达式函数

 var result = words.split(/[,;]+/);

该函数的结果是:

[ "apple", "banana", "apple", " banana", "fruit" ]

但我希望得到的是,拥有“香蕉,苹果”并将其视为单独的价值

[ "apple", "banana, apple", " banana", "fruit" ]

那么是否可以将该函数中的 2 个案例组合起来作为第二个示例输出?或者其他一些优雅的方式?

【问题讨论】:

  • 在您的 wnted 结果中有 "banana, apple" - 正确吗?我不明白为什么 - 你能解释一下并举出更多例子吗?
  • 你不想要words.split(';')吗?
  • 为什么你想要的结果中的"banana, apple"是一个字符串——你能解释一下规则并举另一个例子吗?
  • 更新示例二
  • @AlexFF1 你 aple-bana secodn 示例不匹配第一个示例 - 首先你有元素 "banana, apple" 但在第二个你有 "apple, banana"

标签: javascript arrays regex string typescript


【解决方案1】:

可以使用匹配和替换的组合。

通过匹配,我们采用我们拥有的两种模式

  1. 分隔符(?:\w+;\w+,)之间的值
  2. 值不在分隔符\w+;?之间

现在基于匹配的组,我们只需使用替换以所需格式更改值

let words = `apple;banana;apple, banana;fruit`

let op = words.match(/(?:\w+;\w+,)|\w+;?/g)
              .map(e=>e.replace(/(?:(\w+);(\w+),)|(\w+);?/g, (m,g1,g2,g3)=> g1 ? g1+', '+g2 : g3 ))

console.log(op)

【讨论】:

  • 这个场景“苹果;香蕉;苹果,香蕉;水果,橙子”怎么样?
  • @AlexFF1 什么?你能解释一下你在说什么吗?在这种特殊情况下的预期输出是什么?
【解决方案2】:

数组数学比正则表达式更容易。

目标

apple;banana;apple, banana;fruit > [ "apple", "banana, apple", " banana", "fruit" ]

删除空格,在; 拆分,在, 拆分。

解决方案

const words = 'apple;banana;apple, banana;fruit';
const result = words.split(' ').join('').split(';').join(',').split(',');
console.log(result);

【讨论】:

  • 问题是我需要将分号和逗号之间的任何内容视为单独的值
  • @AlexFF1 我认为与所有答案和 cmets 的共同斗争是我们无法将您的 意思 解读为“将分号与逗号之间的任何内容视为单独的值” - 从您的示例或 cmets 中并不明显。当有逗号时,您显然想用分号 except 分割,然后将前一个分号更改为逗号并将逗号视为分号。 ??
【解决方案3】:

根据问题apple-banana第二个例子(this问题更新后)尝试

words.split(';');

var words = "apple;banana;apple, banana;fruit"

var result = words.split(';');

console.log(result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多