【发布时间】:2011-09-13 07:24:55
【问题描述】:
我正在尝试获取前 50 个字母,因此我使用了subString 函数来获取它。
如您所见,我使用此代码获取它:
<%# Eval("BannerDescription").ToString.Substring(1, 50)%>
但不幸的是,它不起作用,并且出现错误消息:
索引和长度必须引用字符串中的位置。
那么有没有其他办法解决呢?
因为用户是控制数据输入的人!有时他会输入 10 个字母,有时可能会输入 1000 个字母,那么我该如何解决呢?
我都试过了,但我们可以这样用吗:
<%# IIf(Eval("BannerDescription").ToString().Length > 49, Eval("BannerDescription").ToString().Substring(0, 49), Eval("BannerDescription"))%>
谢谢。
【问题讨论】:
-
是 - 不要指定大于字符串的长度。错误消息准确地告诉您问题所在。
-
是的,我知道。因为用户是控制数据输入的人!有时他会进入 10 窝,有时可能会进入 1000 窝,我该如何解决这个问题?
-
呃,检查长度。 (说真的,谁赞成这个?)
-
我只想添加一个评论,这个错误是完全荒谬的。如果长度参数比字符串长,子字符串应该只返回到字符串的末尾。这就是 all 以前版本的 Basic 使用 Left() 函数的方式。大多数时候我使用 Substring,它是为了替换 .net 中缺少的 Left() 和 Right() 函数。在什么情况下返回这个长度错误会有帮助?
-
我必须同意布拉德·马修斯的观点。我已经被这个完全荒谬的例外所困扰好几次了。