想用正则表达式类实现字符串的替换功能。字符串中可能存在中括号,位置不定。要求把它当普通字符处理。
解决方案 »
- 泛型方法重写???
- 求助获取动态生成的picturebox中图片路径
- C#中有没有类似WaitForSingleObject的函数?
- 基础问题 -- 怎么把一个普通数组转换成ArrayList?
- server.createobject 服务器端创建控件失败,但用客户端创建是可以的
- 如何去掉Form左上角的图标?
- 用OleDbCommand 更新数据一直没办法得到正解。
- SNMP SetRequestPDU怎么使用?
- 有关数据库查询的,哪位大哥帮忙看一下,谢谢
- tabpage没有Enabled属性,如果想要其中若干个Disabled掉该怎么办呢?
- 如何证明方法或者类是线程安全
- 对图片进行压缩时的问题
string str = "[[[[[]]]]()()(";
string pstr = @"[\[\]\(\)]+";
加了@后使\失效,个人理解:string pstr = @"[\[\]\(\)]+";的功能为:
匹配"\[\]\(\)"这个字符串出现1次或多次的字符串。
举例:
文件:[人人影视][迷失.Lost]][S04E01].rmvb
[人人影视][迷失.Lost]][S04E02].rmvb
[人人影视][迷失.Lost]][S04E12].rmvb用一个循环改文件名。去掉文件名中的“[人人影视]”。
替换语句为:
新文件名=Regex.Replace(原文件名,"[人人影视]" , "", RegexOptions.IgnoreCase);现在的结果是:新文件名=[][迷失.Lost]][S04E01].rmvb
与想要的结果新文件名=[迷失.Lost]][S04E01].rmvb不符另外:考虑到文件名中还可包含其它字符,如:(),+,...,要把所有这些正则表达式中的功能字符(串)都考虑进去。
新文件名=原文件名.Replace("[人人影视]","");
新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
-------------------
"["位置不定。如果文件名换成:[迷失.Lost]][人人影视][S04E01].rmvb
或:[迷失.Lost]][人人影视RRYS][S04E01].rmvb
代码就失效。
原文件名中有什么字符根本不用去考虑,只在乎于正则
-------------
正是想求这样与字符串无关的正则
TO:#9楼
参照#10楼
之所以没有用字符串类的Replace,是因为在程序中还要用到正则
新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
-------------------
如果文件名换成:[迷失.Lost](人人影视)[S04E01].rmvb,或者[迷失.Lost]+人人影视+[S04E01].rmvb呢?看来还是得分情况讨论啊,这里用字符串类的Replace,需要用正则时再用正则,多写一些代码。
只是现在不知道字符串类的Replace如何设置不区分大小写匹配。
"[\[\(\+][^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]"
------------------
文件名为:[迷失.Lost]+人人影视[S04E01].rmvb
失效
字符串:[迷失.Lost]+人人影视[S04E01].rmvb
[\[\(\+]?[^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]?
匹配的是: +人人影视[S04E01]
所以仍然失效。