请教一个匹配替换的问题?

maotin 2003-07-30 04:27:22
"Left join Customer
On .....
Left join CustomerAddress
On ..... "
请问我如何替换成:
" Customer
On .....
Left join CustomerAddress
On ..... "
谢谢。
...全文
55 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wzs_wzs123 2003-08-01
  • 打赏
  • 举报
回复
string strContent="Left join Customer On ..... Left join CustomerAddress On .....Left join Customer On ";

strContent=Regex.Replace(strContent,
@"\bleft\b\s+\bjoin\b\s+\bcustomer\b",
"Customer",RegexOptions.IgnoreCase);
MessageBox.Show(strContent);
liduke 2003-08-01
  • 打赏
  • 举报
回复
ArLi2003的办法我觉得最简单了
brightheroes 2003-07-31
  • 打赏
  • 举报
回复
我觉得还是用ArLi2003的办法吧
maotin 2003-07-31
  • 打赏
  • 举报
回复
主要是left join customer,我直接匹配是用这样:
text = text.Replace( "left join customer", ",customer" ),
但是把"left join customerAddress" 也替换了,
请教有么比较通用的替换法,
ArLi2003 2003-07-30
  • 打赏
  • 举报
回复
string s = "Left join Customer On ..... Left join CustomerAddress On ..... ";
if (s.ToLower().StartsWith("left")) s = s.Remove(0,9);
maotin 2003-07-30
  • 打赏
  • 举报
回复
这是我的做法,我觉得太复杂了,有没有更好的?谢谢

MatchCollection regexForConvert = Regex.Matches( oldText, @"\bleft\b\s+\bjoin\b\s+(?<name>\w+)", RegexOptions.IgnoreCase );
foreach( Match subString in regexForConvert )
{
String name = subString.Groups["name"].ToString().ToUpper();

int index = oldText.IndexOf( subString.Value.ToUpper() );

int keyLength = index + subString.Value.ToUpper().Length;
int textLength = oldText.Length - keyLength;


if( index > 0 )
newText += oldText.Substring(0, index);

newText += " " + name + ",";

newText += oldText.Substring(keyLength, textLength);

}
maotin 2003-07-30
  • 打赏
  • 举报
回复
是字符串
covis 2003-07-30
  • 打赏
  • 举报
回复
这是字符串还是什么?
maotin 2003-07-30
  • 打赏
  • 举报
回复
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-30 04:27
社区公告

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