在JavaScript中更改字符串中的字符
JavaScript中的“replace()”函数应该使用什么正则表达式来更改0中出现的每个字符“\u1”,但只要找到字符“.”就停止工作 例如: _____323.u_-->00323_ ____032.0_u__;-->0032.0_ 有没有比使用“replace()”更有效的方法 我在研究数字。特别是,它们都可以是浮点的整数,所以我的字符串不能有两个像_32.12.32或_31.34.45那样的点。最多只有一个点 我可以在此添加什么:在JavaScript中更改字符串中的字符,javascript,regex,string,Javascript,Regex,String,JavaScript中的“replace()”函数应该使用什么正则表达式来更改0中出现的每个字符“\u1”,但只要找到字符“.”就停止工作 例如: _____323.u_-->00323_ ____032.0_u__;-->0032.0_ 有没有比使用“replace()”更有效的方法 我在研究数字。特别是,它们都可以是浮点的整数,所以我的字符串不能有两个像_32.12.32或_31.34.45那样的点。最多只有一个点 我可以在此添加什么: /_(?=[\d_.])/g 也要找到后跟nothi
/_(?=[\d_.])/g
也要找到后跟nothing的“u2;”吗
示例:0或2323.43_
_(?=[\d_.]|$)
这不起作用:
/_(?=[\d_.$])/g
你可以用
str = str.replace(/[^.]*/,function(a){ return a.replace(/_/g,'0') })
您可以在正则表达式中使用先行断言
"__3_23._45_4".replace(/_(?![^.]*$)/g,'0')
结果:003023.\u 45\u 4
说明:
/ # start regex
_ # match `_`
(?! # negative lookahead assertion
[^.]*$ # zero or more (`*`) not dots (`[^.]`) followed by the end of the string
) # end negative lookahead assertion
/g # end regex with global flag set
不带replace/regex:
var foo = function (str) {
var result = "", char, i, l;
for (i = 0, l = str.length; i < l; i++) {
char = str[i];
if (char == '.') {
break;
} else if (char == '_') {
result += '0';
} else {
result += str[i];
}
char = str[i];
}
return result + str.slice(i);
}
var foo=函数(str){
var result=“”,char,i,l;
对于(i=0,l=str.length;i
使用正则表达式:dystroy
本文中各种答案的基准:
除非你有其他不明情况- 查找: 替换:
0
或者“也要查找uuuuuuuuuuuuuuuuuuuuuuuu0或2323.43 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
您可以使用
replace()
和reg-ex,您的选择是什么?@dystroy抱歉,在看到您和您的答案之前,我放弃了我的评论。总是有句点吗?@JasonMcCreary我理解“它们都可以是浮点数[…]最多只有一个点”的整数。考虑到_032.0_u是可能的,为什么_032._0不可能?你能解释一下,当第二个参数是函数时,替换是如何工作的吗?@Umur:在这里查找:@Jongware我知道它实际上是如何工作的,我想让它成为一个更好的答案,因为它是一个聪明的答案。@UmurKontacı我添加了引用。全局标志的用法非常好(当不存在时)+1注意:在\uu 323.\uuu 345.\u
(如果出现这种情况)上失败。对于我来说,它只在最后一个
字符之前停止,忽略所有前面的字符(替换未删除的分数)。即使在Python中也不起作用:re.sub(r'''.[^.]*$),“0”,“3'.\u 23.\u 45\u 4.\u 5”)
result:'003023.04504.\u 5'
非正则表达式不需要那么大的回答:var str=“\uuuuuuuuu323.\uuuu345.\uu”;var newstr=str.substr(0,str.indexOf('.'))。替换(/_/g,'0')+str.substr(str.indexOf('.'))代码>@SmokeyHP在你的评论中有一个正则表达式。@很有趣。。是的,当然-我的意思当然是一个解决方案,它需要从正则表达式上花费大部分精力(我的测试证明性能提高了2倍)@Aegis,这太棒了,感谢大家的参与,但我的意思是反对dystroy提供的正则表达式解决方案。@SmokeyHP我知道,我会把它添加到测试中。我的观点是,如果您想要性能,那么避免使用正则表达式是一个好主意,即使只有一个:pAbout您的str:“最多只有一个点”。
0
_(?=[\d_.]|$)