Substring函数的用法看一下吧,你对它的理解是错误的,从此实例检索子字符串。子字符串从指定的字符位置开始且具有指定的长度。 命名空间:System
程序集:mscorlib(在 mscorlib.dll 中)语法
Visual Basic(声明) 
Public Function Substring ( _
startIndex As Integer, _
length As Integer _
) As String
 
Visual Basic(用法) 
Dim instance As String
Dim startIndex As Integer
Dim length As Integer
Dim returnValue As StringreturnValue = instance.Substring(startIndex, length)
 
C# 
public string Substring (
int startIndex,
int length
)
 
C++ 
public:
String^ Substring (
int startIndex, 
int length
)
 
J# 
public String Substring (
int startIndex, 
int length
)
 
JScript 
public function Substring (
startIndex : int, 
length : int
) : String
 
参数
startIndex
子字符串的起始位置的索引。 length
子字符串中的字符数。 返回值
一个 String,它等于此实例中从 startIndex 开始的长度为 length 的子字符串,如果 startIndex 等于此实例的长度且 length 为零,则为 Empty。 
异常
异常类型 条件 
ArgumentOutOfRangeException
 startIndex 加 length 之和指示一个不在此实例内的位置。- 或 - startIndex 或 length 小于零。 
 
a = 60 ,c = 63 a+c = 123指示的位置早就不在字符串中了;
你应该写: string   b   =   s.Substring(a,c-a); 

解决方案 »

  1.   

    你要取前面的还是后面的?取前面的...
    string b = s.Substring(1,a);//这里不需要c...取后面的...
    string b = s.Substring(a);//这里更不需要c...没事儿多看看文档...就算不看文档也该看看书...
      

  2.   

    看看参数说明啊
    Substring(int startIndex ,int length)你的a都60了 后面最多也就3了 怎么能用63呢? 第二个参数是指从起始位置要截取的字符串长度 不是整个字符串的长度
      

  3.   

     string   b   =   s.Substring(a,c-a); 
    b 结果是"111"Email = "[email protected]"
    DotCom = Email.Substring(5, 4)
    DotCom 结果是".com" 
      

  4.   

    subString(起始位置,终结位置) 包前不包后,并且"\r" "\n"被认为是一个字符.int a=s.LastIndexOf("\r\n")返回的是"\r"的起始位置,是58,后面的"\n"是59,后面的"111"是60,61,62位置.你的语法没错要想截取"111"的话,去掉"\r\n"的两个位置,需要起始位置加2.基本上是这样
      

  5.   

    int a=s.LastIndexOf("\n")+1;
    string b = s.Substring(a);
    ???