1

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

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

它会做一个数组['String', 'To', 'Split']

但我需要将它精确地分成两部分,以生成这样的数组:

['StringTo', 'Split']

其中第二个元素始终是 TitleCase 中的最后一个单词,而第一个元素是它之前的所有其他内容。

4

3 回答 3

3

这是你想要的 ?

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

根据大声笑的答案改进:

"StringToSplit".split(/(?=[A-Z][^A-Z]+$)/); // ["StringTo", "Split"]
于 2013-10-21T15:34:03.293 回答
0

像这样使用它:

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

tok = [first, last]; // ["StringTo", "Split"]
于 2013-10-21T15:34:47.233 回答
0

你可以使用

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

换句话说:

  • 从一个创建Array使用splitString
  • sliceArray 没有最后一个元素的 情况下加入其中的一个Array
  • 将其和最后一个元素添加到 finalArray
于 2013-10-21T15:36:28.860 回答