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怎么用正则表达式替换字符串某些字符?的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式用 JQuery ui 自动完成替换某些字符

Android用正则表达式替换

用正则表达式替换某一区段内的字符,在线等

正则表达式高级替换,匹配后进行运算,然后使用结果替换,怎么实现?

正则表达式不匹配某些字符串!

正则表达式替换问题