首页 新闻 会员 周边 捐助

.NET 字符串内容匹配括号里的单位,然后替换。可能有多个小括号。

0
[已解决问题] 解决于 2017-09-07 09:04

如:string str=“17春六年级数学班(1次),17年夏季创意美术班(1次),17暑假写作(1次)

把这字符串小括号中的次替换成别的内容

期望:str=“17春六年级数学班(1课时),17年夏季创意美术班(1课时),17暑假写作(1课时)”

问题补充:

只要替换小括号里的“次”,替换成其他内容,即可。

奇妙能力的主页 奇妙能力 | 菜鸟二级 | 园豆:253
提问于:2017-08-09 10:28
< >
分享
最佳答案
0

"aa(11次)".replace(/\(\d+次\)/,function(e){return e.replace('次','课时')})

奖励园豆:5
czd890 | 专家六级 |园豆:14488 | 2017-08-09 11:49
其他回答(2)
0

正则替换.使用前瞻后顾找到次.然后替换成课时

regex.replate(str,"(?<=([0-9]+).*?(?=))","课时");

吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-09 10:40

大神, 我试了, 这个正则不行。

支持(0) 反对(0) 奇妙能力 | 园豆:253 (菜鸟二级) | 2017-08-09 10:47

@奇妙能力: 因为括号要转义!!这种问题都要我说吗?

支持(0) 反对(1) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-09 10:48

@吴瑞祥: ,,,大神呀, 你没看到我是菜鸟吗?所以辛苦一下。说个正确的。

支持(0) 反对(0) 奇妙能力 | 园豆:253 (菜鸟二级) | 2017-08-09 10:49

@奇妙能力: 你是JS 还是c#? JS和C#的转移不一样

JS 每个\ 都要加双\\   C#就方便了 直接在字符串加@ 

遇到正则转移 还是按照正常的比如 /^  就不会当成^了 

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2017-08-09 16:47
0

str=str.Replace("次","课时");

金琥 | 园豆:2605 (老鸟四级) | 2017-08-09 10:41

只能匹配小括号里的,如果我小括号外面的“次”是不能被替换的。

支持(0) 反对(0) 奇妙能力 | 园豆:253 (菜鸟二级) | 2017-08-09 10:42

你需要先用正则表达式找到内容

支持(0) 反对(0) 金琥 | 园豆:2605 (老鸟四级) | 2017-08-09 10:43

@金琥: 就是不会, 所以才在博客园中提问呀 。

支持(0) 反对(0) 奇妙能力 | 园豆:253 (菜鸟二级) | 2017-08-09 10:46

@奇妙能力: 可以替换了,你去试试

string str = "17春六年级数学班(1次),17年夏季创意美术班(1次),17暑假写作(1次)";
            string r = System.Text.RegularExpressions.Regex.Replace(str, @"\(1.*?\)", "(1课时)");
            MessageBox.Show(r);
支持(0) 反对(0) 金琥 | 园豆:2605 (老鸟四级) | 2017-08-09 11:02

@金琥: 大神, 只要匹配单位, 不要匹配数量, 只要改小括号里的单位,可以不可以回复的时候看下问题。

支持(0) 反对(0) 奇妙能力 | 园豆:253 (菜鸟二级) | 2017-08-09 11:06

@奇妙能力: 

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);

转自:http://ask.csdn.net/questions/648487

支持(0) 反对(0) 金琥 | 园豆:2605 (老鸟四级) | 2017-08-09 13:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册