Android怎么用正则表达式替换字符串某些字符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android怎么用正则表达式替换字符串某些字符?相关的知识,希望对你有一定的参考价值。
android怎么用正则表达式替换字符串某些字符?比如www.baidu.com,我先把这段字符串的.都替换成/
参考技术A String s1="www.baidu.com";System.out.println(s1);
s1=s1.replaceAll("\\\\.", "/");
System.out.println(s1);
正则表达式高级替换,匹配后进行运算,然后使用结果替换,怎么实现?
例子:adfadfd,lat:12+2,lng:34+1,fdsfdsaf
结果:adfadfd,lat:14,lng:35,fdsfdsaf
我只会把匹配到的12+2和34+1换成固定的字符串,如何匹配到的同时进行取值计算后替换成结果。
请问这个如何实现,需要学习哪方面的知识,谢谢各位大佬
你的要求可以用php语言或Python语言实现,因为它们的preg_replace_callback(Python用sub)函数参数中可以使用回调函数,
这样对处理你提的问题比较简便,其它语言也可以处理,但就比较麻烦.按照你的要求编写的Python程序如下
import re
def fun(matches):
return matches[1]+str(eval(matches[2]))
s="adfadfd,lat:12+2,lng:34+1,fdsfdsaf"
regex='(lat:|lng:)([0-9]+([+-][0-9]+)?)'
result=re.sub(regex,fun,s,re.I)
print(result)
源代码(注意源代码的缩进)
按照你的要求编写的PHP程序如下
<?php
function call_back($matches)
return $matches[1].eval("return $matches[2];");
$s="adfadfd,lat:12+2,lng:34+1,fdsfdsaf";
$regex='/(lat:|lng:)([0-9]+([+-][0-9]+)?)/i';
$result=preg_replace_callback($regex,"call_back",$s);
echo $result;
?>
参考技术A 仁者见仁,如果只是4个数字的话,匹配后把+当作分隔符,再把4个数字分别存到数组。又或者,:+当作分隔符,去掉非数字的部分。linux的awk的正则就应该能实现,但如何简化需要对照数据特性去操作。以上是关于Android怎么用正则表达式替换字符串某些字符?的主要内容,如果未能解决你的问题,请参考以下文章