【问题标题】:Javascript Split string on UpperCase Characters大写字符上的Javascript拆分字符串
【发布时间】:2011-10-25 10:58:45
【问题描述】:

在 JavaScript 中如何通过大写字符将字符串拆分成数组?

所以我想拆分:

'ThisIsTheStringToSplit'

进入

['This', 'Is', 'The', 'String', 'To', 'Split']

【问题讨论】:

标签: javascript


【解决方案1】:

我会像这样使用.match() 这样做:

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+/g);

它会生成一个这样的数组:

['This', 'Is', 'The', 'String', 'To', 'Split']

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

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

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

"thisIsATrickyOne".split(/(?=[A-Z])/);

【讨论】:

  • 这将找不到单个大写字符。我建议如下:"thisIsATrickyOne".match(/([A-Z]?[^A-Z]*)/g).slice(0,-1)
  • 回到可读字符串"thisIsATrickyOne".match(/([A-Z]?[^A-Z]*)/g).slice(0,-1).join(" ") 给出this Is A Tricky One
【解决方案2】:
.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

这也应该处理数字。如果这是您要查找的内容,则最后的连接会导致将所有数组项连接成一个句子

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

输出

"This Is The String To Split"

【讨论】:

  • 这是完美的。但是任何使用它的人都应该在以下情况下小心:'ThisIs8TheSt3ringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ") 将输出This Is 8 The St 3 To Split,在3 之后省略小写字符串(ring)。
【解决方案3】:

你来了:)

var arr = UpperCaseArray("ThisIsTheStringToSplit");

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

【讨论】:

    【解决方案4】:

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

    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(' ');
    

    【讨论】:

    • 这个方法不错,小写后比较各个字符串
    【解决方案5】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 2020-03-10
      • 2013-05-21
      • 2020-06-05
      • 2015-03-31
      • 1970-01-01
      • 2021-01-09
      相关资源
      最近更新 更多