給定一個像“HowToMakeALiving”這樣的字串,我想把它拆分成“如何謀生”。另一種情況是“howToMakeALiving”,所以第一個單詞“how”不以大寫字母開頭,而其他單詞以大寫開頭,我仍然想將它拆分并生成“如何謀生”
社區里有一些問題,但是很少有 JS 相關或者需要用到包,而且他們的情況比較復雜,給定的字串都是小寫的。
所以問題是我如何通過 Javascript 中的正則運算式或任何其他更好的方法來做到這一點?
uj5u.com熱心網友回復:
您可以使用正則運算式:
function splitWords(s) {
return s.match(/.[^A-Z]*/g).map((word, i) =>
(i ? word[0].toLowerCase() : word[0].toUpperCase()) word.slice(1)
).join(" ");
}
let words = splitWords("howToMakeALiving");
console.log(words);
words = splitWords("WhyIHadMyDNATakenInParis");
console.log(words);
正則運算式查找.后跟一系列非大寫字符的任何字符 ( )。每個發現都是一個詞。
該回圈區分第一個單詞 ( i == 0) 和其他單詞 ( iis truthy)。每個單詞的第一個字符轉換為大寫(第一個單詞)或小寫(所有其他單詞)。
最后,通過用空格作為分隔符將單詞連接成一個短語。
uj5u.com熱心網友回復:
選項 1:您可以使用如下.match()構建方法執行此操作:
let textvalue = 'howToMakeALiving'
let splitdata = textvalue.match(/[A-Z][a-z] |[0-9] /g).join(" ")
console.log(splitdata)
選項2:您可以使用string.split()方法也支持正則運算式它可以這樣實作
let textvalue = 'howToMakeALiving'
let splitdata = textvalue.split(/(?=[A-Z])/);
console.log(splitdata)
uj5u.com熱心網友回復:
試試這個,它可能有一兩個錯誤,但它會讓你走上正確的道路。
var res = '';
var chars = 'HowToMakeALiving'.split();
var lastChar = '';
for (var i = 0; i < chars.length; i ) {
if (lastChar = '')
lastChar = chars[i];
if (chars[i].toUpperCase() != chars[i] && lastChar.toUpperCase() != lastChar)
res = res ' ';
res = res chars[i];
}
console.log(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451638.html
標籤:javascript 正则表达式
