我的想法是,给定一个字符串,再给出截取字符串开始的特征和结束的特征字符串,return中间的字符串。我写了一个,感觉不好用,谁能帮我完善一下?谢谢了private string search(string a, string begin, string end)
{
  if (a != "" && begin != "")
  {
    try
    {
      int b = a.IndexOf(begin);
      int e = a.IndexOf(end, b);
      string t = a.Substring(b, e - b);
      t = t.Replace(begin, "");
      return t;
     }
     catch (Exception f)
     {
       return "";
      }
   }
   else
   {
      return "";
   }
}

解决方案 »

  1.   

    private string search(string a, string begin, string end)
    {
        int intBegin;
        int intEnd;    string strRtn = "";    if (a.Length == 0 || begin.Length == 0)
        {
            return strRtn;
        }
        
        try
        {
            intBegin = a.IndexOf(begin) + begin.Length;        if (end.Length != 0)
            {
                intEnd = a.IndexOf(end, intBegin);
            }
            else
            {
                intEnd = a.Length;
            }        strRtn = a.Substring(intBegin,intEnd - intBegin);
        }
        catch (Exception ex)
        {   
            strRtn = "";
        }    return strRtn;
    }
      

  2.   

    用正则处理,下面是个简单的:
    private string search(string a, string begin, string end)
    {
    return System.Text.RegularExpressions.Regex.Replace(a,"("+begin+")(.*?)("+end+")","$2");
    }根据需要再自己改改。
      

  3.   

    都有问题,先不讨论怎么写代码,比方字符串 = "a=b*c-d*e"如果左右特征字符串分别是 = 和 *,应该返回什么才比较合理呢?b*c-d 或者是 b ?返回 b*c-d 才比较合理吧?所以上面代码都是错误的 :)
      

  4.   

    恩,主要就是begin和end字符串的内容会有很多符号之类的,比如双引号
      

  5.   

    如果start和begin其中有一个或两个是String.Empty应该返回什么?
      

  6.   

    还有更简单的如果"AAAABCCCCCDEEEEE"开始符是D结束符是B,那么是返回""还是取B、D之间的?
      

  7.   

    你看这个符合你的要求吗private string search(string a, string begin, string end)
    {
    string strReturn = String.Empty;
    int iStartIndex = 0;
    int iEndIndex = a.Length; if (begin.Length > 0)
    {
    iStartIndex = a.IndexOf(begin)+1; if (iStartIndex == -1)
    {
    iStartIndex = 0;
    }
    } if (end.Length > 0)
    {
    iEndIndex = a.LastIndexOf(end); if (iEndIndex == -1)
    {
    iEndIndex = 0;
    }
    } if (iStartIndex <= iEndIndex)
    {
    strReturn= a.Substring(iStartIndex, iEndIndex-iStartIndex);
    }
    else
    {
    strReturn= a.Substring(iEndIndex, iStartIndex-iEndIndex);
    } return strReturn;
    }
      

  8.   

    呵呵,谢谢楼上几个大哥了,我也写了一个,感觉都差不多,主要是用IndexOf和Substring        private string search(string a, string begin, string end)
            {
                //如果输入的字符串为空,则返回空
                if (a == "")
                {
                    return "";
                }
                //得到搜索的开始位置a
                int b = a.IndexOf(begin) + begin.Length;
                //如果结束字符串为空,则返回开始位置到结尾的字符串
                if (end.Length == 0)
                {
                    return a.Substring(b, a.Length-b);
                }
                //搜索结束位置字符串e
                int e = a.IndexOf(end, b);
                //截取需要的字符串
                try
                {
                    string t = a.Substring(b, e - b);
                }
                catch (Exception f)
                {
                    return "";
                }
                return t;
            }
      

  9.   

    a.LastIndexOf(end);
    我还是觉得获得end的index应该用这个