一千萬個為什麽

搜索

如何在進行字符串替換時復制大小寫模式?

例如,如果一個單詞是“Users”而替換是“utilisateurs”,是否有某種函數可以讓我將替換字符串轉換為與原始單詞相同的大寫/非大寫字母級別?

這是使用jquery,textnodes,精確和部分字符串匹配的主要語言翻譯的最後一部分。

現在我只想確保最終和專業的觸摸,是確保翻譯/替換的單詞的情況,與原始單詞/短語的情況相匹配。

我不知道如何將其作為替換電話應用。

我希望這是一個功能

function CopyCase(original,new) {

   //copy the case of the original to the new
}

只是不知道該怎麽做。

最佳答案

這是一個處理沒有內部大小寫的案例的函數:

function caseWord(word, upper) {
    return String.prototype[ upper ? "toUpperCase" : "toLowerCase"].apply(word[0]) + word.slice(1);
}
function caseReplace(s, fromWord, toWord) {
    return s.replace(caseWord(fromWord), caseWord(toWord))
            .replace(caseWord(fromWord, true), caseWord(toWord, true));
}

console.log(caseReplace("The users have joined the Users union.", "users", "utilisateurs"))
console.log(caseReplace("The lovers have joined the Lovers union.", "lovers", "amants"))

// The utilisateurs have joined the Utilisateurs union.
// The amants have joined the Amants union.

轉載註明原文: 如何在進行字符串替換時復制大小寫模式?