ASP.NET 判断字符长度 送高分100分 十万火急!!!

时间:2021-04-01 14:34:52
本人有段代码  不知道为什么达不到效果! 望各位高手指点!!!
  Sub PtList()
      Conn.Open()
      Ad = New SqlDataAdapter("SQL语句",Conn)
      Ds = New Dataset()
      Ad.Fill(Ds,"表")
      Dim Dt As DataTable = Ds.Tables("表")
      Dim i As Integer = 0 
      Dim strvale As string
      While i < Dt.Rows.Count 
       IF Dt.Rows(i)("新闻标题").ToString.Length > 4 Then 
          strvale = Dt.Rows(i)("新闻标题").ToString.Substring(0, 4)
       Else 
          strvale = Dt.Rows(i)("新闻标题").ToString 
       End If 
       System.Math.Min(System.Threading.Interlocked.Increment(i),i-1) 
      End While
      Pt.DataSource = strvale
      Pt.DataBind()
      Conn.Close()
  End Sub

 注:Conn  Ad  Ds 都已声明!!!  
     在页面上需要显示  新闻类别   新闻标题   发布日期

     望各位高手 把此段代码优化 并给出C#代码  寒心万分感谢  
   
     100分落谁家???

8 个解决方案

#1


你从库中取出的记录.net是不会自己认为是字符串的哦,所以就不可以直接用Dt.Rows(i)("新闻标题").ToString

而要用ctype(Dt.Rows(i)("新闻标题"),string).tostring.length
或者用asp兼容的len(Dt.Rows(i)("新闻标题"))这样都可以得到字符串的长

#2


asp.net中如何截取前面20个字?(DataBinder.Eval(Container.DataItem, "title")) 
<%# DataBinder.Eval(Container.DataItem, "title").ToString().Substring(0,20)%>
不过你如果你的字符长度不够20会出错的。
你可以在.cs中写啊,判断一下长度再Substring就行了。
<%# Left(DataBinder.Eval(Container.DataItem, "title"),20)%>

截取中文和英文长度的问题 
http://www.cnblogs.com/renyu732/archive/2005/06/20/177833.html

#3


始终提示:

    未找到类型“Char”的默认成员。

#4


Dim strvale As string
只有一个字符串,while循环会把前面对 strvale 的赋值覆盖掉。

最后DataBind的结果只可能是最后一条结果。

#5


你可在页面如此绑定:(取前20个字节)
<%# myCutString(Convert.ToString(DataBinder.Eval(Container, "DataItem.ban_sno")),20) %>

=========函数======================
/// <summary>
/// 截取以字节计算的文本长度
/// </summary>
/// <param name="msytr">要截取的文本串</param>
/// <param name="intLength">要截取的字节数</param>
/// <returns>返回截取的字节数</returns>
private string myCutString(string mystr,int intLength)
{
Byte[] myByte = System.Text.Encoding.Default.GetBytes(mystr);
string str = "";
if(myByte.Length < intLength)
{
str = mystr;
}
else
{
str = System.Text.Encoding.Default.GetString(myByte,0,intLength);
switch(System.Text.Encoding.Default.GetByteCount(mystr) - intLength)
{
case 1:
str += "..";
break;
case -1:
str += "...";
break;
default:
break;
}
}
return(str);
}

用这个方法。。抛弃你的那个

#6


TO  Squalltao(桃子)  高手

      你说的对!最后返回只有最后一条记录!

      有什么办法解决吗?

#7


TO hackate(兰花开香入梦境,独思佳人亦飘然!!)  高手

     你用的是函数!  虽说可以完成类似效果!

     但不是我想要的效果!

#8


TO viscoo(冠达)  高手

     你说ctype(Dt.Rows(i)("新闻标题").string).tostring.length 此法正确

     但是如果使用 Dt.Rows(i)("新闻标题").string.tostring.length

     也是一样的效果!

#1


你从库中取出的记录.net是不会自己认为是字符串的哦,所以就不可以直接用Dt.Rows(i)("新闻标题").ToString

而要用ctype(Dt.Rows(i)("新闻标题"),string).tostring.length
或者用asp兼容的len(Dt.Rows(i)("新闻标题"))这样都可以得到字符串的长

#2


asp.net中如何截取前面20个字?(DataBinder.Eval(Container.DataItem, "title")) 
<%# DataBinder.Eval(Container.DataItem, "title").ToString().Substring(0,20)%>
不过你如果你的字符长度不够20会出错的。
你可以在.cs中写啊,判断一下长度再Substring就行了。
<%# Left(DataBinder.Eval(Container.DataItem, "title"),20)%>

截取中文和英文长度的问题 
http://www.cnblogs.com/renyu732/archive/2005/06/20/177833.html

#3


始终提示:

    未找到类型“Char”的默认成员。

#4


Dim strvale As string
只有一个字符串,while循环会把前面对 strvale 的赋值覆盖掉。

最后DataBind的结果只可能是最后一条结果。

#5


你可在页面如此绑定:(取前20个字节)
<%# myCutString(Convert.ToString(DataBinder.Eval(Container, "DataItem.ban_sno")),20) %>

=========函数======================
/// <summary>
/// 截取以字节计算的文本长度
/// </summary>
/// <param name="msytr">要截取的文本串</param>
/// <param name="intLength">要截取的字节数</param>
/// <returns>返回截取的字节数</returns>
private string myCutString(string mystr,int intLength)
{
Byte[] myByte = System.Text.Encoding.Default.GetBytes(mystr);
string str = "";
if(myByte.Length < intLength)
{
str = mystr;
}
else
{
str = System.Text.Encoding.Default.GetString(myByte,0,intLength);
switch(System.Text.Encoding.Default.GetByteCount(mystr) - intLength)
{
case 1:
str += "..";
break;
case -1:
str += "...";
break;
default:
break;
}
}
return(str);
}

用这个方法。。抛弃你的那个

#6


TO  Squalltao(桃子)  高手

      你说的对!最后返回只有最后一条记录!

      有什么办法解决吗?

#7


TO hackate(兰花开香入梦境,独思佳人亦飘然!!)  高手

     你用的是函数!  虽说可以完成类似效果!

     但不是我想要的效果!

#8


TO viscoo(冠达)  高手

     你说ctype(Dt.Rows(i)("新闻标题").string).tostring.length 此法正确

     但是如果使用 Dt.Rows(i)("新闻标题").string.tostring.length

     也是一样的效果!