substring截取

wartingyou 2010-07-22 02:47:00
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

知道答案的高手来解答下。
...全文
224 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixiaodeshui 2010-07-22
  • 打赏
  • 举报
回复
我用的2008,不过没这么干过.呵呵!
my_huohu 2010-07-22
  • 打赏
  • 举报
回复
我用的是05,直接报错
zhoubupt 2010-07-22
  • 打赏
  • 举报
回复
不要钻牛角就对了
klml884228788 2010-07-22
  • 打赏
  • 举报
回复
路过,来瞧瞧
wartingyou 2010-07-22
  • 打赏
  • 举报
回复
谢谢各位参与。。C#可能是浏览器缓存,还是VS处理掉了。都是他们开发的东西我们不知道。只不过今天小弟无意发现而已!
gohappy2008 2010-07-22
  • 打赏
  • 举报
回复
你要的结果如果是0022:
string ret = str.Substring(str.LastIndexOf('.') + 1);
a184485789 2010-07-22
  • 打赏
  • 举报
回复
直接用
str.Substring(str.LastIndexOf('.'));
就可以达到楼主的目的了
myhope88 2010-07-22
  • 打赏
  • 举报
回复
路过,来瞧瞧
songjd 2010-07-22
  • 打赏
  • 举报
回复
先把函数功能和参数说明看看清楚先吧。
VS没报错是它容错性好,帮你处理掉了。
请叫我卷福 2010-07-22
  • 打赏
  • 举报
回复
str.Substring(str.LastIndexOf('.'));
得到.0022
不要后面的str.Length
penglin1989 2010-07-22
  • 打赏
  • 举报
回复
Response.Write(str.Substring(str.LastIndexOf('.'),str.Length));
这个本身就有问题,Substring(0,1),从0位置开始截取1长度的字符串,从str.LastIndexOf('.')位置开始到字符串的尾部的长度怎么可能有str的全长那么多!
cc0302 2010-07-22
  • 打赏
  • 举报
回复
是你vs的问题,我的运行就直接报错
兔子-顾问 2010-07-22
  • 打赏
  • 举报
回复
错误写法没必要讨论啦,顶多结果是.net的某个特殊容错判断。
Snowdust 2010-07-22
  • 打赏
  • 举报
回复
string str = "555.0022";
如果你要的结果是0022:
string ret = str.Substring(str.LastIndexOf('.') + 1);
如果你要的结果是.0022:
string ret = str.Substring(str.LastIndexOf('.'));
Peter200694013 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 wartingyou 的回复:]
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));


[/Quote]

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)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧