我看到有類似的問題,但我沒有找到符合我的具體目標的問題。什麼是在JavaScript中通過字符串的字符最有效的方法?
我已經開發了一個小的功能,它通過串環路(假設字符10和160之間)提取
- 通配符(如$ 1,$ 2,...) - 所謂的 「特價」
- 它們之間的字符串
要解析的字符串的示例:「word1 word2 $ 1 word3 $ 2 word4 $ 3」。輸出的
實施例:
{
strings: [word1 word2, word3, word4],
specialChars: 3
}
可以肯定也有極限的情況下(沒有通配符,只有1個通配符,通配符可以是在開始或字符串的末尾)。
我寫了到目前爲止的算法如下(有東西要進行修改,但我更感興趣的是效率不是那麼結果是,在這個問題):
function parsestr(str: string) {
let specialChars = [],
plaintextParts = [],
resultObject = {
strings: [],
specialChars: 0
};
// convert to char array and loop
str.split('').forEach(function(c, i){
if (c=='$') specialChars.push(i);
});
resultObject.specialChars = specialChars.length;
// extract plain text parts
if (specialChars.length == 0) return resultObject;
// part before first wildcard
if (specialChars[0]>0) plaintextParts.push(str.substr(0, specialChars[0]-1));
// 2..N
for (var i=1; i<specialChars.length-1; i++) {
plaintextParts.push(str.substr(specialChars[i-1]+2, specialChars[i]-1));
}
// last part
if (specialChars[specialChars.length-1]+1 < str.length-1)
plaintextParts.push(str.substr(specialChars[specialChars.length-2]+2, specialChars[specialChars.length-1]-1));
resultObject.strings = plaintextParts;
return resultObject;
}
// call function and print output
var jsonString = "word1 word2 $1 word3 $2 word4 $3";
console.log(JSON.stringify(parseJsonString(jsonString)));
我相信這可以用JS O_o –
的內置正則表達式來完成。 @MatíasFidemraizer這正是如何做到這一點;-) – Neal