我从网站(通过find()方法获得)此字符串:
uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła
我需要删除所有字母,并用点替换“x”。
我删除了以下字母:temp2 = temp2.replace(/[^0-9]/gi, '');
但我不知道,我怎么能改变“x”到点。你能救我吗?
预期输出:53.1000
答案 0 :(得分:3)
首先替换“x”,然后更改当前的正则表达式以忽略点:
var temp2 = "uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła";
temp2 = temp2.replace(/ x /gi, '.');
temp2 = temp2.replace(/[^0-9\.]/gi, '');
注意“x”周围的空格(否则“最大值”中的“x”也会变成点)
答案 1 :(得分:2)
考虑两个步骤:
s.replace(/[^0-9x]/gi, '') // remove everything but numbers and x
.replace(/x/gi, '.') // replace x with dot (leaving numbers)
但请注意:
uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła
- > .53.1000
(因为x为最大值)
答案 2 :(得分:0)
您可以使用替换,但您需要先替换,因为删除所有字符也会删除x。请注意,有两个x,所以在您的具体情况下,您可以使用:
var string = "uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła"
console.log(string);
string = string.replace(/ x /gi,'.');
console.log(string);
string = string.replace(/[^0-9.]/gi,'');
console.log(string);
由于较早的x不在引号内,因此第一个替换不会更改它。另一个选择是替换所有xs然后在完成后返回并去除前导和尾随点。
答案 3 :(得分:0)
虽然您已经接受了答案,但实现目标的另一种方法如下:
var str = "uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła",
output = str.replace(/\D/gi, function (a, b, c) {
if (a == 'x' && c.charAt(b-1) == ' ' && c.charAt(b+1) == ' ') {
return '.';
}
return '';
})
console.log(output); // => '53.1000'
一种更新的方法,允许在x
字符之前和之后使用替代的空白字符:
var str = "uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła",
output = str.replace(/\D/g, function (a, b, c) {
if (a == 'x' && /\s/.test(c.charAt(b-1)) && /\s/.test(c.charAt(b+1))) {
return '.';
}
return '';
})
console.log(output);
上述说明(后面的代码片段):
/\D/
匹配所有非数字字符(所有不 0-9); g
- g
'全球',匹配每个事件,而不仅仅是第一个; function (a, b, c)
:
a
- 匹配的字符本身,b
- 是在字符串中找到该字符的索引c
- 我们工作的字符串。if (a == 'x' && /\s/.test(c.charAt(b-1)) && /\s/.test(c.charAt(b+1)))
:
a == 'x'
- 测试匹配的字符是否为x
,/\s/.test()
- 测试正则表达式以查看它是否与传递给test()
方法的字符串匹配,c.charAt(b-1)
- 使用索引我们正在查看字符串中匹配字符前的字符。c.charAt(b+1)
- 这次是查看字符串中的以下字符。x
,并且之前和之后的字符都是空格,则返回.
个字符。参考文献: