![](/img/trans.png)
[英]How to Make First Letter Upper Case without using Regex in javascript
[英]Regex split on upper case and first digit
我需要將字符串"thisIs12MyString"
拆分為一個看起來像[ "this", "Is", "12", "My", "String" ]
我已經到了"thisIs12MyString".split(/(?=[A-Z0-9])/)
但它在每個數字上分裂並給出數組[ "this", "Is", "1", "2", "My", "String" ]
所以在單詞中我需要將字符串拆分為大寫字母和數字,而前面沒有另一個數字。
你在找這個嗎?
"thisIs12MyString".match(/[A-Z]?[a-z]+|[0-9]+/g)
回報
["this", "Is", "12", "My", "String"]
正如我在評論中所說,我的方法是先在每個數字序列之前插入一個特殊字符作為標記 :
"thisIs12MyString".replace(/\d+/g, '~$&').split(/(?=[A-Z])|~/)
其中~
可以是任何其他字符,最好是不可打印的字符(例如控制字符),因為它不太可能在字符串中“自然地”出現。
在這種情況下,您甚至可以在每個大寫字母前插入標記,並省略前瞻,使分割變得非常容易:
"thisIs12MyString".replace(/\d+|[A-Z]/g, '~$&').split('~')
它可能會或可能不會更好。
在我的犀牛控制台中,
js> "thisIs12MyString".replace(/([A-Z]|\d+)/g, function(x){return " "+x;}).split(/ /);
this,Is,12,My,String
另一個,
js> "thisIs12MyString".split(/(?:([A-Z]+[a-z]+))/g).filter(function(a){return a;});
this,Is,12,My,String
我想不出用RegEx實現這一目標的任何方法。
我想你需要在代碼中做到這一點。
請檢查URL,同一問題不同語言(ruby) - >
代碼位於底部: http : //code.activestate.com/recipes/440698-split-string-on-capitalizeduppercase-char/
您可以使用當前正則表達式修復JS缺少使用當前正則表達式進行數組拆分的外觀。
快速偽代碼:
var result = [];
var digitsFlag = false;
"thisIs12MyString".split(/(?=[A-Z0-9])/).forEach(function(word) {
if (isSingleDigit(word)) {
if (!digitsFlag) {
result.push(word);
} else {
result[result.length - 1] += word;
}
digitsFlag = true;
} else {
result.push(word);
digitsFlag = false;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.