正则表达式,替换指定字符(无规则)

wuhongyao3 2011-11-05 09:55:31
现有一文本文件,内容格式如下:

张三\t男\t\t21\t123
李四\t\t女\t\22\t231

每行的字段之间用\t隔开,但是\t数不固定

求一个正则表达式,将不固定的 \t 替换成一个固定的字符

谢谢!~~
...全文
119 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
诺维斯基 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuhongyao3 的回复:]
引用 5 楼 soonfei 的回复:
引用 4 楼 wuhongyao3 的回复:
引用 3 楼 return_false 的回复:
C# code

string tempStr = @"张三\t男\t\t21\t123
李四\t\t女\t\22\t231";
string pattern = @"(?im)(\\t)+";
tempStr = Regex.Replace(te……
[/Quote]
网上一大堆。一搜一大把。

去找“过客”的博客吧。比较详细。
Kylinone 2011-11-05
  • 打赏
  • 举报
回复
先引用System.Text.RegularExpression;

然后每次读一行(这个不用写吧);

每读一行,就循环执行一次如下操作:
string str = Regex.Replace(line,"\\t{1,}",";"); //line为你读到的一行string,结果就是line里面的所有\t被替换为";".

参考http://www.wangqi.com/n9250c53.aspx c#正则表达式快速入门
wuhongyao3 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 soonfei 的回复:]
引用 4 楼 wuhongyao3 的回复:
引用 3 楼 return_false 的回复:
C# code

string tempStr = @"张三\t男\t\t21\t123
李四\t\t女\t\22\t231";
string pattern = @"(?im)(\\t)+";
tempStr = Regex.Replace(tempStr, pattern, "|");……
[/Quote]

3Q

能问下,你在那找的说明性资料呢?
比较详细的,求地址,谢谢..
haojuntu 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 soonfei 的回复:]

引用 4 楼 wuhongyao3 的回复:
引用 3 楼 return_false 的回复:
C# code

string tempStr = @"张三\t男\t\t21\t123
李四\t\t女\t\22\t231";
string pattern = @"(?im)(\\t)+";
tempStr = Regex.Replace(tempStr, pattern, "|")……
[/Quote]
谢谢,学习了一下。。
诺维斯基 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuhongyao3 的回复:]
引用 3 楼 return_false 的回复:
C# code

string tempStr = @"张三\t男\t\t21\t123
李四\t\t女\t\22\t231";
string pattern = @"(?im)(\\t)+";
tempStr = Regex.Replace(tempStr, pattern, "|");//输出:张三|男|21|123\r\n 李四………
[/Quote]

i
如果设定此修正符,模式中的字符将同时匹配大小写字母。

m
当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。
wuhongyao3 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 return_false 的回复:]
C# code

string tempStr = @"张三\t男\t\t21\t123
李四\t\t女\t\22\t231";
string pattern = @"(?im)(\\t)+";
tempStr = Regex.Replace(tempStr, pattern, "|");//输出:张三|男|21|123\r\n 李四……
[/Quote]

这个可以.
麻烦可以稍微解释下吗? ?im 代表什么
  • 打赏
  • 举报
回复
string tempStr = @"张三\t男\t\t21\t123
李四\t\t女\t\22\t231";
string pattern = @"(?im)(\\t)+";
tempStr = Regex.Replace(tempStr, pattern, "|");//输出:张三|男|21|123\r\n 李四|女|\\22|231
wuhongyao3 2011-11-05
  • 打赏
  • 举报
回复
不行的
\t 数量不定
我想要的效果是,无论连续几个\t ,都替换成一个\t(或其他字符).
PaulyJiang 2011-11-05
  • 打赏
  • 举报
回复
直接用string.replace不行么

110,531

社区成员

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

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

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