簡體   English   中英

正則表達式從TitleCase獲取最后一個單詞,camelCase

[英]Regular Expression to get the last word from TitleCase, camelCase

我正在嘗試使用javascript將TitleCase(或camelCase)字符串分成兩個部分。 我知道我可以使用前瞻將它分成多個部分:

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

它將創建一個數組['String', 'To', 'Split']

但我需要的是將它分成兩個部分,以產生這樣的數組:

['StringTo', 'Split']

其中第二個元素始終是TitleCase中的最后一個單詞,第一個元素是其前面的所有其他元素。

這是你想要的 ?

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

改進基於lolol答案:

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

像這樣使用它:

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

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

你可以用

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

換一種說法:

  • 使用String split來創建Array
  • 加入slice那的Array ,而不該的最后一個元素Array
  • 將該值和最后一個元素添加到最終的Array

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM