当前位置:编程学习 > C#/ASP.NET >>

C#的repace方法和正则表达式的结合用法


正则表达式在C#中的用法:
三种情况举例
A                                   B      
Our W a y to home    our way to home
O u r way to home     our way to home
our way to h o m e     our way to home

要用正确的B来代替A,如何用正则表达式来表示A的三种情况和B??
(A1:句中有2个以上字母以空格间隔出现)
(A2:句首有2个以上字母以空格间隔出现)
(A3:句尾有2个以上字母以空格间隔出现)
急啊 !!
--------------------编程问答-------------------- 1、不知道想干什么,标题说repace(replace?),正文没看到和这有什么关系
2、没看出哪个是B
3、O u r,这不是正则能解决的问题,除非给出明确的规则 --------------------编程问答-------------------- A                     B   
Our W a y to home    our way to home
O u r way to home    our way to home
our way to h o m e   our way to home

我确定以及肯定这是可以用正则解决的问题,而且已经cover到A1部分情况了,就是不知道如何全部cover,实现如下
(\s+[a-zA-Z]) ([a-zA-Z]\s+) $1$2
这是利用正则表达式的模式匹配,我有点不熟悉
--------------------编程问答-------------------- A    
Our W a y to home 
O u r way to home 
our way to h o m e 

B
our way to home
our way to home
our way to home --------------------编程问答-------------------- string Replace(string input, string pattern, string replacement); --------------------编程问答-------------------- --------------------编程问答-------------------- 我这样问,自然有这样的道理,不是想你说的,如果只是大家看得见的单词的字母分开了,我想大家都知道怎么处理的;存在就有存在的道理。
规则就是在一个句子中,有连续的两个或多个单个字母间隔空格出现就要合并成一个单词;不管是多长的句子;也不管是有多少个字母;
我已经用别的方式解决了这个问题;
自己正在研究用正则如何解决,如果能帮忙分析一下,真的很谢谢;
但是不管怎样,请认真分析这个题意......3ks --------------------编程问答-------------------- 你的意思是一旦出现
I a m here
这样的,就直接合并成
Iam here
就行了,别的不用管?

如果是这样,那很简单
Regex reg = new Regex(@"(?<=(?:^|\s)[a-zA-Z])\s(?=[a-zA-Z](?:\s|$))");
string result = reg.Replace(yourStr, "");
richTextBox2.Text = result;
--------------------编程问答--------------------
引用 7 楼  的回复:
你的意思是一旦出现
I a m here
这样的,就直接合并成
Iam here
就行了,别的不用管?

如果是这样,那很简单
C# code
Regex reg = new Regex(@"(?<=(?:^|\s)[a-zA-Z])\s(?=[a-zA-Z](?:\s|$))");
string result = reg.Replace(yourStr, "");
richTe……


这个得有字典吧,要不程序怎么知道 几个字母是一个单词。 --------------------编程问答-------------------- #7说的的确是一种没有被cover到的情况;;但是这些数据是客户提供,出现这样的情况就不是我能处理的问题,我会反馈过去;所以诸如此类的错误你可以略过;

用正则,可能真的没法处理这种变化的长度的问题,所以我会再看看,如果是个死胡同,那就不再深究了,只是用才#处理就算了。 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,