我想將字串轉換為句子大小寫。也就是說,每個句子中的第一個字符大寫,后面的字符小寫。我設法做到了。但是,在拆分字串并將其轉換為句子大小寫后,我需要將其與相應的字符再次連接起來。
這是我將字串拆分為句子的代碼:
const string = "my seNTencE . My sentence! my another sentence. yEt another senTence? Again my sentence .";
function splitString(str) {
str = str.split(/[.!?]/);
for(let i = 0; i < str.length; i ) {
str[i] = str[i].trim();
}
for(let i = 0; i < str.length; i ) {
str[i] = str[i].charAt(0).toUpperCase() str[i].slice(1).toLowerCase();
}
return str;
}
console.log(splitString(string));
在return陳述句中,我想回傳連接的字串。例如,第一句必須以點結尾,第二句必須以感嘆號結尾,等等。如何實作呢?
uj5u.com熱心網友回復:
str.split從字串中消除正則運算式匹配的結果。如果要保留它,可以將分隔符放在后面,如下所示:
str.split(/(?<=[.!?])/);
該語法(?<= )意味著正則運算式將查找標點符號前面的位置,但不會在匹配中包含所述標點符號,因此該split方法將保留它。
作為旁注,請記住,此功能會破壞首字母縮寫詞、專有名詞和單詞I。強制句號后的第一個字母為大寫字母可能沒問題,但您會發現此功能弊大于利。
uj5u.com熱心網友回復:
對捕獲組使用正則運算式。此正則運算式使用lazy ?修飾符,因此匹配將在第一個 [!.?] 處結束,并使用global g標志來獲取所有匹配項。
const string = "my seNTencE . My sentence! my another sentence. yEt another senTence? Again my sentence ."
const rx = /(.*?)([.!?])/g
const found = []
while (m = rx.exec(string)) {
let str = m[1].trim()
str = str.charAt(0).toUpperCase() str.slice(1).toLowerCase()
found.push(str m[2])
}
console.log(found)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/448813.html
標籤:javascript 数组 细绳
