protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string str = "555.0022";
            Response.Write(str.Substring(str.LastIndexOf('.'),str.Length));
        }
    }Response.Write(str.Substring(str.LastIndexOf('.'),str.Length)); 按照我们编程的计算长度来说绝对有问题的。str.Length长度范围超过。但是在VS2008中第一次运行出结果显示是.0022如果你刷新下页面就会出现索引和长度必须引用该字符串内的位置。
这是为何,是VS的问题么?还是别的问题。JavaScript中也可以写成var str="555.0022";alert(str.substring(str.lastIndexOf('.')));最后弹出的也是.0022知道答案的高手来解答下。

解决方案 »

  1.   

    string str = "555.0022";
    如果你要的结果是0022:
    string ret = str.Substring(str.LastIndexOf('.') + 1);
    如果你要的结果是.0022:
    string ret = str.Substring(str.LastIndexOf('.'));
      

  2.   


    string str = "555.0022";
    Console.WriteLine(str.Substring(str.LastIndexOf('.'), str.Length));
    Unhandled Exception: System.ArgumentOutOfRangeException: Index and length must refer to a location w
    ithin the string.
    Parameter name: length
       at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)   at System.String.Substring(Int32 startIndex, Int32 length)
      

  3.   

    错误写法没必要讨论啦,顶多结果是.net的某个特殊容错判断。
      

  4.   

    str.Substring(str.LastIndexOf('.'));
    得到.0022
    不要后面的str.Length
      

  5.   

    Response.Write(str.Substring(str.LastIndexOf('.'),str.Length)); 
    这个本身就有问题,Substring(0,1),从0位置开始截取1长度的字符串,从str.LastIndexOf('.')位置开始到字符串的尾部的长度怎么可能有str的全长那么多!
      

  6.   

    直接用
    str.Substring(str.LastIndexOf('.'));
    就可以达到楼主的目的了
      

  7.   

    你要的结果如果是0022:
    string ret = str.Substring(str.LastIndexOf('.') + 1);
      

  8.   

    谢谢各位参与。。C#可能是浏览器缓存,还是VS处理掉了。都是他们开发的东西我们不知道。只不过今天小弟无意发现而已!