【发布时间】:2019-07-19 01:25:53
【问题描述】:
我正在尝试制作一个小型节点应用程序,让我可以将文本转换为双打“字母”。我对 JavaScript 还很陌生,我想知道最好的方法是什么?
我可以使用:string.replace("A", doublestruck.uppercase.A)(见下文)62(26 个大写,26 个小写,10 个数字),但我觉得肯定有更好的方法来做到这一点。
// specialcharacters.js
const doubleStruckUpper = {
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 doubleStruckLower = { ... };
const doubleStruckNumbers = { ... };
module.exports.doubleStruck = {
uppercase: doubleStruckUpper,
lowercase: doubleStruckLower,
numbers: doubleStruckNumbers,
};
// index.js
const { doubleStruck } = require("./specialcharacters");
var string = "Change this to double-struck characters";
string
.replace("A", doubleStruck.uppercase.A)
.replace("B", doubleStruck.uppercase.B)
// and so on
这可行,但它必须很长,并且可能有更好的方法来做到这一点。
提前致谢!
【问题讨论】:
-
肯定可以进行一些改进。本质上,您运行在 O(N) 的 StringLength * 26。它可以改进为 Stringlength 虽然
-
Object.keys(doubleStruck).forEach(key => Object.keys(doubleStruck[key]).forEach(k => string.replace(new RegExp(k, 'g'), doubleStruck[key][k])))
标签: javascript node.js