我正在尝试获取前50个字母,因此我使用subString
函数来获取它。
正如您所看到的,我使用此代码来获取它:
<%# Eval("BannerDescription").ToString.Substring(1, 50)%>
但不幸的是它无法正常工作,并且会出现错误信息:
索引和长度必须指代字符串中的位置。
还有其他方法可以修复吗?
因为用户是控制数据输入的人!有时候他会输入10个字母,其他时间可能是1000个字母,所以我怎么能解决这个问题?
我尝试了所有这些,但我们可以这样使用它:
<%# IIf(Eval("BannerDescription").ToString().Length > 49, Eval("BannerDescription").ToString().Substring(0, 49), Eval("BannerDescription"))%>
感谢。
答案 0 :(得分:19)
也许是这样的事情 -
<%# Eval("BannerDescription").ToString().Substring(0, Math.Min(Eval("BannerDescription").ToString().Length, 50)) %>
答案 1 :(得分:3)
<%# new string(Eval("BannerDescription").ToString().Take(50).ToArray()) %>
答案 2 :(得分:1)
你应该能够实现一个功能,如果它太长,它会给你一个更短的版本:
<%
Function ShortVersion (strData, strLen)
If Len (strData) > strLen Then
ShortVersion = Left (strData, strLen)
Else
ShortVersion = strData
End If
End Function
%>
答案 3 :(得分:1)
注意:此答案适用于c#,因为在发布此答案时问题具有此特定标记。
这将为您提供不超过50个字符:
<%# Eval("BannerDescription").ToString().Length > 50 ? Eval("BannerDescription").ToString().Substring(0, 50) : Eval("BannerDescription").ToString() %>
更好的是,在代码隐藏(.cs)中引入一个可以在标记中引用的受保护方法:
标记:
<%# GetStringMaxLength(Eval("BannerDescription").ToString(), 50) %>
代码隐藏:
protected static string GetStringMaxLength(string text, int maxLength)
{
if (string.IsNullOrEmpty(text))
{
return string.Empty;
}
if (text.Length > maxLength)
{
return text.Substring(0, maxLength);
}
return text;
}
这样看起来更干净。 : - )
答案 4 :(得分:1)
如果这是您的问题,并且您使用的是.NET 3.5,则可以尝试:
public static class StringEx
{
public static string SubstringNE(this string str, int index, int length)
{
if (index >= str.Length)
{
return String.Empty;
}
if (index + length > str.Length)
{
return str.Substring(index);
}
return str.Substring(index, length);
}
}
您以与Substring
相同的方式调用它,但它不会抛出错误的索引/长度。举个例子:<%# Eval("BannerDescription").ToString().SubstringNE(1, 50)%>
。 NE
用于“无异常”。
答案 5 :(得分:0)
50比结果字符串的长度更长,如果这是真的话,你的代码在所有情况下都会失败。您不能提供比其中的字符数量更大的参数。 使用String.Length属性进行操作,该属性将为您提供字符串中的字符数。因此,如果您的String超过50个字符(或等于50),您可以说您将获得前50个字符,否则您只能获得小于50个字符的整个字符串。
您可以使用此代码:
Eval(“BannerDescription”)。ToString()。长度&gt; 49? Eval(“BannerDescription”)。ToString()。SubString(0,49):Eval(“BannerDescription”)。ToString()
此致 彼得
答案 6 :(得分:0)
使用以下代码段,我在我的项目中多次使用它。
<%# Eval("BannerDescription").ToString().Length <= 22 ? Eval("BannerDescription") : string.Format("{0}....", Eval("BannerDescription").ToString().Substring(0,22))%>