string str=“17春六年级数学班(1次),17年夏季创意美术班(5次),17暑假写作(8次)”
把匹配括号里的单位"次"替换成别的内容
期望:str=“17春六年级数学班(1课时),17年夏季创意美术班(5课时),17暑假写作(8课时)”
正则提取括号中的内容在执行replace操作
protected string Replace(System.Text.RegularExpressions.Match m)
{
return m.Groups[0].Value.Replace("次", "课时");
}
string str = "17春六年级数学班(1次),哈次,17年夏季创意美术班(5次),17暑假写作(8次),次级";
str = System.Text.RegularExpressions.Regex.Replace(str, @"\([^)]+\)", Replace);
如果你确认你括号内容都是 (数字次),直接替换
string str = "17春六年级数学班(1次),哈次,17年夏季创意美术班(5次),17暑假写作(8次),次级";
str=str.Replace("次)","课时)");
直接str.Replace("次", "课时");
Pattern p=Pattern.compile("\\(\\d{1,2}.\\)"); //是匹配()的
Matcher m=p.matcher(str);
while(m.find()){//它是分组,即有哪些匹配的,str.replace不改变str的值,所以才每次调用都进行赋值的
System.out.println(m.group()+"m");
str=str.replace(m.group().substring(1,m.group().length()-1),"课时");//去掉括号就剩里面的内容了
}
System.out.println(str);
可以参考一下pattern和Mather的用法
顺便再看一下正则表达式,因为()在正则表达式中有意义。所以需转义用到的时候。也包括replace和split方法。也就是正则表达式用到的语法,
都需要转义。