如何在javascript中将上标数字转换为实数

问题描述 投票:0回答:4

如何将包含上标的字符串转换为普通字符串?

例如我有一个包含

"n⁵"
的字符串。我想把它改成
"n5"
。对于字符串
"n⁵"
,我没有使用任何
<sup></sup>
标签。和你看到的一模一样。

javascript jquery lodash
4个回答
6
投票

要替换每个字符,您可以将所有上标字符组装成一个有序字符串(例如,

位于索引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
投票

没什么花哨的:您可以将

字符替换为
5
字符。

var result = "n⁵".replace("⁵", "5");

console.log(result);


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⁷⁸⁹'));


0
投票

还值得检查 String.prototype.normalize(form) 函数,它可能会起作用。

console.log('n²'.normalize('NFKD'));
console.log('H₂O'.normalize('NFKD'));

© www.soinside.com 2019 - 2024. All rights reserved.