Jab*_*uez 2 html javascript string replace
我有一个HTML格式的字符串,我需要将HTML格式的所有数学指数替换<sup></sup>为没有HTML格式的数学指数.
我使用的replace()方法,但我需要查找和替换100个指数,从<sup>1</sup>到<sup>100</sup>了,我应该写的所有的数字(从1到100).
var copiar = texto.
replace(/<br>/g, "\n").
replace(/<sup><\/sup>/g, "").
replace(/<sup>2<\/sup>/g, "²").
replace(/<sup>3<\/sup>/g, "³").
replace(/<sup>4<\/sup>/g, "?").
replace(/<sup>5<\/sup>/g, "?").
replace(/<sup>6<\/sup>/g, "?").
replace(/<sup>7<\/sup>/g, "?").
replace(/<sup>8<\/sup>/g, "?").
replace(/<sup>9<\/sup>/g, "?").
replace(/<sup>10<\/sup>/g, "¹?");
...
replace(/<sup>100<\/sup>/g, "¹??");
Run Code Online (Sandbox Code Playgroud)
我的问题是:有一种方法可以自动完成这项任务吗?谢谢!
更新:我正在进行此替换,因为我正在开发一个适用于iOS的应用程序,能够打印(以HTML格式)并复制到剪贴板(平面文本).这就是原因,因为我更换了这些<sup>数字.
更新2014年10月14日:我也需要替换负面指数.使用@minitech答案并修改一点,我可以替换所有指数(正面和负面).也许对某人有用,这里的代码:
var map = '?¹²³??????';
var copiar = texto.replace(/<sup>(\-*(\d*))<\/sup>/g, function (str, digits){
return Array.prototype.map.call(digits, function (digit) {
var exp = "";
if (digit != '-') {
exp += map.charAt(digit);
} else {
exp += "¯";
}
return exp;
}).join('');
});
Run Code Online (Sandbox Code Playgroud)
一个字符串,charAt提供一种方便的方法将数字映射到相应的上标数字:
var map = '?¹²³??????';
var copiar = texto.replace(/<sup>(\d*)<\/sup>/g, function (_, digits) {
return Array.prototype.map.call(digits, function (digit) {
return map.charAt(+digit);
}).join('');
});
Run Code Online (Sandbox Code Playgroud)