Public Function CutFixContent(ByVal str As String, ByVal start As String, ByVal last As String, ByVal Condition As Integer)
        Dim strTemp
        On Error Resume Next
        If InStr(str, start) > 0 And InStr(str, last) > 0 Then
            Select Case CInt(Condition)
                Case 1  '左右都截取(都取前面)(保留关键字)
                    strTemp = Strings.Right(str, Len(str) - InStr(str, start) + 1)
                    strTemp = Strings.Left(strTemp, InStr(strTemp, last) + last - 1)
                Case 2  '只往右截取(取前面的)(去除关键字)
                    strTemp = Strings.Right(str, Len(str) - InStr(str, start) - Len(start) + 1)
                Case 3  '只往右截取(取前面的)(包含关键字)
                    strTemp = Strings.Right(str, Len(str) - InStr(str, start) + 1)
                Case 4  '只往左截取(取后面的)(包含关键字)
                    strTemp = Strings.Left(str, InStrRev(str, start) + Len(start) - 1)
                Case 5  '只往左截取(取后面的)(去除关键字)
                    strTemp = Strings.Left(str, InStrRev(str, start) - 1)
                Case 6  '只往左截取(取前面的)(包含关键字)
                    strTemp = Strings.Left(str, InStr(str, start) + Len(start) - 1)
                Case 7  '只往右截取(取后面的)(包含关键字)
                    strTemp = Strings.Right(str, Len(str) - InStrRev(str, start) + 1)
                Case 8  '只往左截取(取前面的)(去除关键字)
                    strTemp = Strings.Left(str, InStr(str, start) - 1)
                Case 9  '只往右截取(取后面的)(包含关键字)
                    strTemp = Strings.Right(str, Len(str) - InStrRev(str, start))
                Case Else '左右都截取(都取前面)(去除关键字)
                    strTemp = Strings.Right(str, Len(str) - InStr(str, start) - Len(start) + 1)
                    strTemp = Strings.Left(strTemp, InStr(strTemp, last) - 1)
            End Select
        Else
            strTemp = ""
        End If
        CutFixContent = strTemp
    End Function

解决方案 »

  1.   

    If InStr(str, start) > 0 And InStr(str, last) > 0 不知道是不是判断STR 和last,start转为INT 后大于0,还是说是判断字符串长度符合某条件;public string CutFixContent(string str,string start,string last,int Condition)
    {
      string strTemp;
      try
      {
        if(int.parse(last)>0 and str.length>int.parse(last))//保证长度
        {
          switch(Condition)
          {
            case 1:strTemp = str.Substring(int.parse(Start),int.parse(Last)-int.parse(Start));break;//从起始点START截取last-start长度的字符串。
            .................
            .............
          }
        }
        else
        {
          strTemp="";
        }
      }
      catch(Exception ex)
      {
        messagebox.show(ex.message);
      }
      return strTemp;
    }
      

  2.   

    Case 1  '左右都截取(都取前面)(保留关键字) 
                        strTemp = Strings.Right(str, Len(str) - InStr(str, start) + 1) 
                        strTemp = Strings.Left(strTemp, InStr(strTemp, last) + last - 1) 
    InStr(strTemp, last)这个是整数类型吗?
    如果是
    last 是字符类型,
    InStr(strTemp, last) + last - 1这个表达式不会出错吗?我不太会VB
      

  3.   

    先谢了。
    会有你说的那种错误。
    另外执行:CutFixContent("@#$www.blueshop.com.tw/board/show.asp?subcde","#","/",1)时出错:
    str.Substring(int.parse(Start),int.parse(Last)-int.parse(Start));------------输入字符串的格式不正确。
    好像int.parse()里面参数不对吧??俺菜鸟一个
    望各位指教
      

  4.   

    WEB的啊,还以为是FORM的
    你输入的全是字符串,str.Substring(int.parse(Start),int.parse(Last)-int.parse(Start))这个当然出错。
      

  5.   

    我在msdn查到Strings类属于Microsoft.VisualBasic 命名空间
    可是我导入此命名空间,还是不能用Strings下面的方法???????/
      

  6.   

    WEB的不熟悉。你要的是:www.blueshop.com.tw/board/show.asp?subcde
    这个吗?
      

  7.   

    InStr(strTemp, last)这个是整数类型吗? 
    如果是 
    last 是字符类型, 
    InStr(strTemp, last) + last - 1 ------对上面的代码在vb.net真不会错,我也感到贼纳闷!!!!!!!
      

  8.   

    不是,我只是随便举个例子。
    CutfixContent函数里面的参数是那样定义的 啊,所以我
    调用CutFixContent("@#$www.blueshop.com.tw/board/show.asp?subcde","#","/",1)
    应该不会错吧?我想得到的结果应该是“#$www.blueshop.com.tw/board/”
    这是个c# Windows应用程序。
      

  9.   

    获取的值是:#$www.blueshop.com.tw/board/show.asp?
      

  10.   

    搞了半天,纯粹一字符串分割,下面代码与你的举例效果一样,VB跟C#似乎是唱反调,呵呵!        public string GetString(string str, string first, string last, int SwCase)
            {
                string strTemp="";
                try
                {
                    switch (SwCase)
                    {
                        case 1:
                            strTemp = str.Substring(InStr(str ,first)); 
                            return strTemp;
                        case 2:
                            strTemp = str.Substring(InStr(str, first) + 1);
                            return strTemp;
                        case 3:
                            strTemp = str.Substring(InStr(str, first));
                            return strTemp;
                        case 4:
                            strTemp = str.Substring(0, InStrRev(str, first)+first .Length);
                            return strTemp;
                        case 5:
                            strTemp = str.Substring(0, InStrRev(str, first));
                            return strTemp;
                        case 6:
                            strTemp = str.Substring(0, InStrRev(str, first) + first.Length);
                            return strTemp;
                        case 7:
                            strTemp = str.Substring(InStr(str, first));
                            return strTemp;
                        case 8:
                            strTemp = str.Substring(0,InStr(str, first));
                            return strTemp;
                        case 9:
                            strTemp = str.Substring(InStr(str, first));
                            return strTemp;
                        default :
                            strTemp = str.Substring(InStr(str, first) + 1, InStr(str, last) - 2);
                            return strTemp;                       
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                return strTemp;
            }        public int InStr(string s, string start)
            {
                int K;
                K = s.IndexOf(start, 0, s.Length);//获取子字符串Start的index
                return K;
            }
            public int InStrRev(string s, string last)
            {
                int K;
                K = s.LastIndexOf(last);//获取子字符串last的index
                return K;
            }