如何使用两个输入数组将字符串中的字符替换为字符串中的其他字符

时间:2019-10-19 16:30:09

标签: javascript arrays translation

我有一个字符串,想要用另一个数组中的相应字符替换一个字符数组中的所有字符,我该怎么做?

样本输入/输出:

translate("ㅎello") => "Hello"  

具有以下2个要翻译的数组

const from = ["ㅏ", "Б", "C", "Δ", "Э", "Ф", "Γ", "ㅎ", "И", "ㅈ", "ㅋ", "Λ", "ㅁ", "N", "Ω", "Π", "Q", "ㄹ", "Σ", "T", "U", "V", "W", "X", "Y", "Z"];
const to = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];

PS:这个问题是在几分钟前提出的,在我能够发表答案之前已被删除

3 个答案:

答案 0 :(得分:0)

const from = ["ㅏ", "Б", "C", "Δ", "Э", "Ф", "Γ", "ㅎ", "И", "ㅈ", "ㅋ", "Λ", "ㅁ", "N", "Ω", "Π", "Q", "ㄹ", "Σ", "T", "U", "V", "W", "X", "Y", "Z"];
const to = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];

const translate = input => [...input].map(char => (index => ~index ? to[index] : char)(from.indexOf(char))).join("")

答案 1 :(得分:0)

您可以创建一个从输入字符到输出字符的映射,然后只要该映射中存在该字符作为键即可获取相应的值:

const from = ["ㅏ", "Б", "C", "Δ", "Э", "Ф", "Γ", "ㅎ", "И", "ㅈ", "ㅋ", "Λ", "ㅁ", "N", "Ω", "Π", "Q", "ㄹ", "Σ", "T", "U", "V", "W", "X", "Y", "Z"];
const to = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
const mapping = new Map(from.map((c, i) => [c, to[i]]));

function translate(input) {
  return [...input].map(c => mapping.has(c) ? mapping.get(c) : c).join('');
}
console.log(translate("ㅎello"));

答案 2 :(得分:0)

您可以使用Mapreplace

const from = ["ㅏ", "Б", "C", "Δ", "Э", "Ф", "Γ", "ㅎ", "И", "ㅈ", "ㅋ", "Λ", "ㅁ", "N", "Ω", "Π", "Q", "ㄹ", "Σ", "T", "U", "V", "W", "X", "Y", "Z"];
const to = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
const mapper = new Map(from.map((key, index) => [key, to[index]]));

function translate(string) {
  return string.replace(/./gu, (g)=> mapper.get(g) || g)
}
console.log(translate("ㅎello"));
console.log(translate("ㅎellΠ"));