用java正则表达式替换字符串中偶数次出现的子串??? 5
例如,对于Strings="axbxcxdxexfx.....",如何用java正则表达式把偶数次出现的x替换成y呢?如果是指定替换第k次出现的x呢?求解!...
例如,对于String s = "axbxcxdxexfx.....", 如何用java正则表达式把偶数次出现的x替换成y呢?如果是指定替换第k次出现的x呢?
求解! 展开
求解! 展开
5个回答
展开全部
(x.*?)x全部替换成\\1y
如果是k次的话,就是((x.*?){k-1})x替换成\\1y
记得把k-1替换成数字,比把字符“k-1"写到正则里。
如果是k次的话,就是((x.*?){k-1})x替换成\\1y
记得把k-1替换成数字,比把字符“k-1"写到正则里。
追问
\\1
反斜杠后面加个数字有什么特殊含义?
追答
这是反向引用,\\n表示引用第n个分组匹配到的东西。一个小括号就是一个分组(一般情况下是),按左括号的位置来判断它是第几个分组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-20
展开全部
charAt() 加for循环遍历吧。。根据下标判断奇偶。。。
追问
不是字符x,而是字符串的话,就没有charAt或者,会麻烦多了。
追答
那就正则吧。。然后java 的 pattern matcher去遍历就好了。。写个计数器,记下奇偶。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String s1 = "axbxcxdxexfx";
String s2 = "";
int n = 0;
for (int i = 0; i < s1.length(); i++) {
System.out.println(n);
char c = s1.charAt(i);
if (c=='x') {
n++;
}
if (n%2==0&&c=='x') {
s2 += "y";
}else {
s2 += c;
}
}
System.out.println(s1);
System.out.println(s2);
String s2 = "";
int n = 0;
for (int i = 0; i < s1.length(); i++) {
System.out.println(n);
char c = s1.charAt(i);
if (c=='x') {
n++;
}
if (n%2==0&&c=='x') {
s2 += "y";
}else {
s2 += c;
}
}
System.out.println(s1);
System.out.println(s2);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同求· 目测我单用正则搞不出来
追问
那你不单用正则,用什么搞出来?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询