这是我的做法,我觉得太复杂了,有没有更好的?谢谢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); }

解决方案 »

  1.   

    string s = "Left join Customer  On .....  Left join CustomerAddress  On ..... ";
    if (s.ToLower().StartsWith("left")) s = s.Remove(0,9);
      

  2.   

    主要是left join customer,我直接匹配是用这样:
    text = text.Replace( "left join customer", ",customer" ), 
    但是把"left join customerAddress" 也替换了,
    请教有么比较通用的替换法,
      

  3.   

    我觉得还是用ArLi2003的办法吧
      

  4.   

    ArLi2003的办法我觉得最简单了
      

  5.   

    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);