关于去除指定字符间内容的问题

aries524 2008-11-20 09:57:19
求一个方法,去除“/*...*/”或“{...}”之间内容,也要去掉“/* */”或“{ }”这样的边界符
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
除了正则之外,也可以用以下方法:

string s1 = "abcd/*gddgdg*/efg"; //s1为待处理的字符串
string strtmp,s2; //s2为处理后的字符串
int begin, end; //begin用于记录"/*"的位置,end用于记录"*/"的位置
strtmp=s1.Replace("/*", "{");
strtmp=strtmp.Replace("*/", "}"); //如果是"/*...*/"的话,先将其转换为"{..}"形式
begin = strtmp.IndexOf("{");
end = strtmp.IndexOf("}");
s2 = strtmp.Substring(0, begin) +strtmp.Substring(end+1,(strtmp.Length-end-1));
root_ 2008-11-20
  • 打赏
  • 举报
回复
也不是必须的,不过这只是指没有嵌套的情况,有嵌套就要用平衡组了

string result = Regex.Replace(yourStr, @"/\*(?:(?!\*/)[\s\S])*\*/|{[^}]*}", "");
RexZheng 2008-11-20
  • 打赏
  • 举报
回复
/* */ 可能真得使用非贪婪匹配了
RexZheng 2008-11-20
  • 打赏
  • 举报
回复
借用楼上的代码,但是小小的建议:非到万不得已不要使用非贪婪匹配,当你做实际应用时,你会发现大多数情况下都是一个*?在消耗你大半的效率。

修改如下:


using System.Text.RegularExpressions;

string str="你的字符串";
str=Regex.Replace(str,@"{[^}]*}|/\*[^\/]*?\*/","");
止戈而立 2008-11-20
  • 打赏
  • 举报
回复
正则

using System.Text.RegularExpressions;

string str="你的字符串";
str=Regex.Replace(str,@"{[\s\S]*?}|/\*[\s\S]*?\*/","");

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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