Javascript在UpperCase字符上拆分字符串

Nic*_*ray 86 javascript

如何通过UpperCase字符在Javascript中将字符串拆分为数组?

所以我希望分裂:

'ThisIsTheStringToSplit'
Run Code Online (Sandbox Code Playgroud)

('This', 'Is', 'The', 'String', 'To', 'Split')
Run Code Online (Sandbox Code Playgroud)

Ten*_*eff 170

我会这样做.match():

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+/g);
Run Code Online (Sandbox Code Playgroud)

它会像这样制作一个数组:

['This', 'Is', 'The', 'String', 'To', 'Split']
Run Code Online (Sandbox Code Playgroud)

编辑:因为该string.split()方法也支持正则表达式,所以可以像这样实现

'ThisIsTheStringToSplit'.split(/(?=[A-Z])/); // positive lookahead to keep the capital letters
Run Code Online (Sandbox Code Playgroud)

这也将从评论中解决问题:

"thisIsATrickyOne".split(/(?=[A-Z])/);
Run Code Online (Sandbox Code Playgroud)

  • 这将找不到单个大写字符.我建议如下:`"thisIsATrickyOne".匹配(/([AZ]?[^ AZ]*)/ g).slice(0,-1)` (43认同)
  • 回到可读字符串 `"thisIsATrickyOne".match(/([AZ]?[^AZ]*)/g).slice(0,-1).join(" ")` 给出 `this Is A Tricky One` (2认同)

Max*_*Max 14

.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")
Run Code Online (Sandbox Code Playgroud)

这应该处理数字..最后的连接导致将所有数组项连接到句子,如果这是你要找的

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")
Run Code Online (Sandbox Code Playgroud)

产量

"This Is The String To Split"
Run Code Online (Sandbox Code Playgroud)

  • 太棒了。但任何使用它的人在以下情况下都应该小心: `'ThisIs8TheSt3ringToSplit'.match(/[AZ][az]+|[0-9]+/g).join(" ")` 将输出 `This Is 8 St 3 To Split`,在“3”之后省略小写字符串(“ring”)。 (2认同)

Man*_*ijn 7

这个给你 :)

var arr = UpperCaseArray("ThisIsTheStringToSplit");

function UpperCaseArray(input) {
    var result = input.replace(/([A-Z]+)/g, ",$1").replace(/^,/, "");
    return result.split(",");
}
Run Code Online (Sandbox Code Playgroud)

  • 这也会被最初在字符串中的任何`,`拆分...... (2认同)

小智 7

这是一个处理数字、全小写部分和多个大写字母的答案:

const wordRegex = /[A-Z]?[a-z]+|[0-9]+|[A-Z]+(?![a-z])/g;
const string = 'thisIsTHEString1234toSplit';
const result = string.match(wordRegex);

console.log(result)
Run Code Online (Sandbox Code Playgroud)


Azi*_*ziz 6

这是我的解决方案,它快速、跨平台、不依赖编码,并且可以轻松地用任何语言编写而无需依赖。

var s1 = "This????????Üimun???????P?íklad???????????????Élda";
s2 = s1.toLowerCase();
result="";
for(i=0; i<s1.length; i++)
{
 if(s1[i]!==s2[i]) result = result +' ' +s1[i];
 else result = result + s2[i];
}
result.split(' ');
Run Code Online (Sandbox Code Playgroud)