如何将包含上标的字符串转换为普通字符串?
例如,我有一个包含"n⁵"
的字符串。我想将其转换为"n5"
。对于字符串"n⁵"
,我没有使用任何<sup></sup>
标记。这就像你看到的那样。
答案 0 :(得分:2)
没什么好看的:你可以用⁵
字符替换5
字符。
var result = "n⁵".replace("⁵", "5");
console.log(result);
答案 1 :(得分:2)
要替换每个字符,您可以将所有上标字符组合在一个有序字符串中(以便⁰
位于索引0,¹
位于索引1处等)并获取相应的数字indexOf
:
function digitFromSuperscript(superChar) {
var result = "⁰¹²³⁴⁵⁶⁷⁸⁹".indexOf(superChar);
if(result > -1) { return result; }
else { return superChar; }
}
然后,您可以通过此函数运行字符串中的每个字符。例如,您可以通过replace
回调:
"n⁵".replace(/./g, digitFromSuperscript)
或者更优化的是,将替换限制为仅考虑上标字符:
"n⁵".replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, digitFromSuperscript)
答案 2 :(得分:1)
您可以使用替换功能使用正则表达式替换:
function replaceSupers(str) {
var superMap = {
'⁰': '0',
'¹': '1',
'²': '2',
'³': '3',
'⁴': '4',
'⁵': '5',
'⁶': '6',
'⁷': '7',
'⁸': '8',
'⁹': '9'
}
return str.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, function(match) {
return superMap[match];
});
}
console.log(replaceSupers('a¹²n⁴⁵lala⁷⁸⁹'));
&#13;