求助-正则-获取$1的值传入某个方法中操作

xnx3cn 2010-11-26 11:40:13



public class cs {

public static void main(String[] args) {
String a="aaaaaw2waaa";
System.out.println(a.replaceAll("aw(\\d*)wa",func("$1")));
}
public static String func(String num){
num+="这里要能获得$1的值,能够在这里操作";
return num;
}

}



要能在func()中获得$1的值操作,然后返回给replaceall这里面,要怎么做啊?其中要判断替换的
aw2wa
有多处。


也不一定非要用replaceall,如有一个方法public String func(String str){}
只要能将字符串中所有的
aw[数字]wa
替换成
aw[func(数字)的返回值]wa
便可

这个正则替换在网站中执行的次数极频繁,要怎样写呢?
...全文
196 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xnx3cn 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caofaping 的回复:]

Java code

public static void main(String[] args) {
String a="aaaaaw2waaa";
System.out.println(a.replaceAll("aw(\\d*)wa",func("$1")));
}
public static String fun……
[/Quote]


传进func()的是"$1"这个字符串,在func中num+="111";返回的是$1111,
结果成了这样了:a.replaceAll("aw(\\d*)wa","$1111");

但如果func换成:

public static String func(String num){
Integer.parseInt(num);就不行了,传入的是一个"$1"
num+="111";
return num;
}

茫茫大海 2010-11-26
  • 打赏
  • 举报
回复

public class cs {

public static void main(String[] args) {
String a="aaaaaw2waaa";
System.out.println(a.replaceAll("aw(\\d*)wa",func("$1")));
}
public static String func(String num){
num+="真的不明白,你的能满足要求啊!";
return num;
}

}
//打印结果:aaaa2真的不明白,你的能满足要求啊!aa

着色的地方就是你传入的啊!
yaoweijq 2010-11-26
  • 打赏
  • 举报
回复
执行语句打印出
aaaa2这里要能获得2的值,能够在这里操作aa
这效果好着呢么
[Quote=引用楼主 xnx3cn 的回复:]
Java code


public class cs {

public static void main(String[] args) {
String a="aaaaaw2waaa";
System.out.println(a.replaceAll("aw(\\d*)wa",func("$1")));
}
public……
[/Quote]
caofaping 2010-11-26
  • 打赏
  • 举报
回复

public static void main(String[] args) {
String a="aaaaaw2waaa";
System.out.println(a.replaceAll("aw(\\d*)wa",func("$1")));
}
public static String func(String num){
num+="111";
return num;
}

结果:

aaaa2111aa

有什么不对不?我用的是1.5
xnx3cn 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cj205 的回复:]

func($1)
[/Quote]直接提示出错
Mr-Jee 2010-11-26
  • 打赏
  • 举报
回复
func($1)
xnx3cn 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caofaping 的回复:]

你写的不是已经满足你的要求么?
[/Quote]
传入func的是一个$1,而不是$1获取的字符串啊
怎样能将$1获取的字符串传入func呢
caofaping 2010-11-26
  • 打赏
  • 举报
回复
你写的不是已经满足你的要求么?
xnx3cn 2010-11-26
  • 打赏
  • 举报
回复
谢谢楼上的各位朋友了

public static void main(String[] args) {
String a="aaaaaw2waaaw345wa";
Matcher m = Pattern.compile("aw(\\d*)wa").matcher(a);
while(m.find()){
a=a.replaceFirst("aw\\d*wa", func(m.group(1)));
}

System.out.println(a);
}
public static String func(String num){
System.out.println("num = "+Integer.parseInt(num));
num+="楼主是不是要传结果啊!";
return num;
}

eggno8 2010-11-26
  • 打赏
  • 举报
回复

//是这个需求么?对文本中某种特殊字符串做一些简单的拼接处理。
String a="aaaaaaw123wa456";
System.out.println(a.replaceAll("(?<=aw)(\\d*)(?=wa)","经过包装的【$1】在此"));
caofaping 2010-11-26
  • 打赏
  • 举报
回复

public static void main(String[] args) {
String a="aaaaaw2waaa";
Matcher m = Pattern.compile("aw(\\d*)wa").matcher(a);
while(m.find()){
System.out.println(func(m.group(1)));
}

}
public static String func(String num){
System.out.println("num = "+Integer.parseInt(num));
num+="楼主是不是要传结果啊!";
return num;
}


你要的是不是num不是$1,而是从字符a中截取的数字?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧