Javascript(或jQuery)字符串替换
Javascript (or jQuery) string replacement
所以,我从 JSON 数组中提取字符串,如下所示:
Hg22+
CO32-
Al3Cl23+
这些数字需要上标或下标,有规则。它只是数字 0-9,如果该数字后面有加号或减号,则它需要是上标,这意味着我需要将字符串更改为 <sup>3+</sup>
。所有其他数字,如果没有上标,则需要加下标。以下是我需要的一些示例:
C12H22O11 (s, sucrose)
= <sub>1</sub><sub>2</sub>H<sub>2</sub><sub>2</sub>O<sub>1</sub><sub>1</sub> (s, sucrose)
Al3Cl23+
= Al<sub>3</sub>Cl<sub>2</sub><sup>3+</sup>
Hg22+
= Hg<sub>2</sub><sup>2+</sup>
我会,但是很马虎。我真的很愿意接受一种像上面那样更改字符串的好方法。如果有人能提供帮助,我将不胜感激!
谢谢!
简单。
var result = input.replace(/\d([+-]?)/g,function(match,plus) {
var s = plus ? "sup" : "sub";
return "<"+s+">"+match+"</"+s+">";
});
完成。
根据@Niet the Dark Absol的回答稍作修改
var tests = ['Hg22+', 'CO32-', 'Al3Cl23+','C12H22O11 (s, sucrose)'];
function chemize(input) {
return input.replace(/\d([\+\-]?)/g,function(match,plus) {
var s = plus ? "sup" : "sub";
return "<"+s+">"+match+"</"+s+">";
});
}
for(var z in tests) {
var test = tests[z];
console.log('"' + test + '" --> ' + chemize(test) );
}
输出:
"Hg22+" --> Hg<sub>2</sub><sup>2+</sup>
"CO32-" --> CO<sub>3</sub><sup>2-</sup>
"Al3Cl23+" --> Al<sub>3</sub>Cl<sub>2</sub><sup>3+</sup>
"C12H22O11 (s, sucrose)" --> C<sub>1</sub><sub>2</sub>H<sub>2</sub><sub>2</sub>O<sub>1</sub><sub>1</sub> (s, sucrose)
所以,我从 JSON 数组中提取字符串,如下所示:
Hg22+
CO32-
Al3Cl23+
这些数字需要上标或下标,有规则。它只是数字 0-9,如果该数字后面有加号或减号,则它需要是上标,这意味着我需要将字符串更改为 <sup>3+</sup>
。所有其他数字,如果没有上标,则需要加下标。以下是我需要的一些示例:
C12H22O11 (s, sucrose)
= <sub>1</sub><sub>2</sub>H<sub>2</sub><sub>2</sub>O<sub>1</sub><sub>1</sub> (s, sucrose)
Al3Cl23+
= Al<sub>3</sub>Cl<sub>2</sub><sup>3+</sup>
Hg22+
= Hg<sub>2</sub><sup>2+</sup>
我会,但是很马虎。我真的很愿意接受一种像上面那样更改字符串的好方法。如果有人能提供帮助,我将不胜感激!
谢谢!
简单。
var result = input.replace(/\d([+-]?)/g,function(match,plus) {
var s = plus ? "sup" : "sub";
return "<"+s+">"+match+"</"+s+">";
});
完成。
根据@Niet the Dark Absol的回答稍作修改
var tests = ['Hg22+', 'CO32-', 'Al3Cl23+','C12H22O11 (s, sucrose)'];
function chemize(input) {
return input.replace(/\d([\+\-]?)/g,function(match,plus) {
var s = plus ? "sup" : "sub";
return "<"+s+">"+match+"</"+s+">";
});
}
for(var z in tests) {
var test = tests[z];
console.log('"' + test + '" --> ' + chemize(test) );
}
输出:
"Hg22+" --> Hg<sub>2</sub><sup>2+</sup>
"CO32-" --> CO<sub>3</sub><sup>2-</sup>
"Al3Cl23+" --> Al<sub>3</sub>Cl<sub>2</sub><sup>3+</sup>
"C12H22O11 (s, sucrose)" --> C<sub>1</sub><sub>2</sub>H<sub>2</sub><sub>2</sub>O<sub>1</sub><sub>1</sub> (s, sucrose)