我正在尝试使用javascript将TitleCase(或camelCase)字符串分成两个部分。我知道我可以使用前瞻将它分成多个部分:
"StringToSplit".split(/(?=[A-Z])/);
它将创建一个数组['String', 'To', 'Split']
但我需要的是将它分成两个部分,以产生这样的数组:
['StringTo', 'Split']
第二个元素始终是TitleCase中的最后一个单词,第一个元素是其前面的所有其他元素。
答案 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