Javascript如何通过多个分隔符拆分字符串并将其包含在结果中

时间:2018-04-30 19:37:34

标签: javascript regex delimiter

我正在尝试用多个分隔符分隔字符串并将它们包含在结果中。将所有连续的非空白字符视为单个单词。例如:“我正在研究一个新的超级项目哇。呀!”成为“!Yay。我的项目 - 超级新工作我是” 我的代码是:

function test(string){
    console.log(string.split(/([.'\!'+a-zA-Z]+)/g ).reverse().join(' ') );
}

var string ="I'm working on a new super-project wow. Yay!"
test(string)

到目前为止的输出是:  好极了!哇。项目 - 超级新的工作我

我仍然得到错误的结果。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:1)

我建议首先使用粘贴的标点符号交换单词(使用.replace(/(^|\s)(\w+)([^\w\s]+)(?!\S)/g,"$1$3$2")),然后匹配所有非空格块并使用空格加入:



function test(string){
    console.log(string.replace(/(^|\s)(\w+)([^\w\s]+)(?!\S)/g,"$1$3$2").match(/\S+/g).reverse().join(' ') );
}
//"!Yay .wow project-super new a on working I'm"
var string ="I'm working on a new super-project wow. Yay!"
test(string)




单词标点符号交换正则表达式详细信息:

  • (^|\s) - 第1组:字符串或空格的开头
  • (\w+) - 第2组:一个或多个单词字符
  • ([^\w\s]+) - 第3组:除了单词和空格之外的任何1个以上的单词
  • (?!\S) - 当前位置的右侧不允许使用非空白字符。与(^|\s)一起,这些子图案形成空白字边界

答案 1 :(得分:0)

规则不是那么清楚,可能会有更多的案例要包括但如果没有,分裂[!?.\s-]+(或任何分隔符)将是一个解决方案。您不需要入侵.replace().match()方法:



var str = "I'm working on a new super-project wow. Yay!";
console.log(str.split(/([!?.\s-])/g).reverse().join(''));




相关问题