正则表达式从TitleCase获取最后一个单词,camelCase

时间:2013-10-21 15:29:16

标签: javascript regex split

我正在尝试使用javascript将TitleCase(或camelCase)字符串分成两个部分。我知道我可以使用前瞻将它分成多个部分:

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

它将创建一个数组['String', 'To', 'Split']

但我需要的是将它分成两个部分,以产生这样的数组:

['StringTo', 'Split']

第二个元素始终是TitleCase中的最后一个单词,第一个元素是其前面的所有其他元素。

3 个答案:

答案 0 :(得分:3)

这是你在找什么?

"StringToSplit".split(/(?=[A-Z][a-z]+$)/); // ["StringTo", "Split"]

根据lolol答案改进:

"StringToSplit".split(/(?=[A-Z][^A-Z]+$)/); // ["StringTo", "Split"]

答案 1 :(得分:0)

像这样使用:

s = "StringToSplit";
last  = s.replace(/^.*?([A-Z][a-z]+)(?=$)/, '$1'); // Split
first = s.replace(last, ''); // StringTo

tok = [first, last]; // ["StringTo", "Split"]

答案 2 :(得分:0)

您可以使用

(function(){
  return [this.slice(0,this.length-1).join(''), this[this.length-1]];
}).call("StringToSplit".split(/(?=[A-Z])/));
//=> ["StringTo", "Split"]

在[其他]字样中:

  • 使用Array
  • 中的split创建String
  • 加入slice Array,而不是的最后一个元素 Array
  • 将最后一个元素添加到最终Array