C#代码: public static string Cut(string sOrig, int iLen)
{
StringBuilder sbTemp = new StringBuilder();
char[] acTemp = sOrig.ToCharArray();
foreach(char cTemp in acTemp)
{
if(iLen<0)
break;
if((int)cTemp>255)
iLen -= 2;
else
iLen --;
sbTemp.Append(cTemp);
}
if(iLen>0)
return sbTemp.ToString();
else
return sbTemp.ToString()+"...";
}
public static int LenB(string sOrig)
{
int iLenB = 0;
char[] acTemp;
acTemp = sOrig.ToCharArray();
foreach(char cTemp in acTemp)
if((int)cTemp>255)
iLenB += 2;
else
iLenB ++;
return iLenB;
}VB.NET代码:
Public Shared Function Cut(ByVal sOrig As String, ByVal iLen As Integer) As String
Dim sbTemp As New StringBuilder
Dim acTemp As Char() = sOrig.ToCharArray()
Dim cTemp As String
For Each cTemp In acTemp
If iLen < 0 Then
Exit For
End If
If CInt(cTemp) > 255 Then
iLen -= 2
Else
iLen -= 1
End If
sbTemp.Append(cTemp)
Next cTemp
If iLen > 0 Then
Return sbTemp.ToString()
Else
Return sbTemp.ToString() + "..."
End If
End Function
Public Shared Function LenB(ByVal sOrig As String) As Integer
Dim iLenB As Integer = 0
Dim acTemp() As Char
acTemp = sOrig.ToCharArray()
Dim cTemp As String
For Each cTemp In acTemp
If CType(cTemp > 255, Integer) Then
'If CInt(cTemp) > 255 Then
iLenB += 2
End If
Next
If CType(cTemp <= 255, Integer) Then
iLenB = iLenB + 1
Return iLenB
End If
End Function上面的VB.NET的代码是我找顶上C#的改的,语法上面没有什么错误了。可是在通过编译之后运行调试出现如下错误。我不会改,哪位高手帮帮我.输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误:
行 378: Exit For
行 379: End If
行 380: If CInt(cTemp) > 255 Then
行 381: iLen -= 2
行 382: Else
源文件: D:\TIMES\Classes\Functions.vb 行: 380 堆栈跟踪:
[FormatException: 输入字符串的格式不正确。]
Microsoft.VisualBasic.CompilerServices.DoubleType.Parse(String Value, NumberFormatInfo NumberFormat)
Microsoft.VisualBasic.CompilerServices.DoubleType.Parse(String Value)
Microsoft.VisualBasic.CompilerServices.IntegerType.FromString(String Value)[InvalidCastException: 从字符串“为”到类型“Integer”的强制转换无效。]
Microsoft.VisualBasic.CompilerServices.IntegerType.FromString(String Value)
TIMES.TIMES.Functions.Cut(String sOrig, Int32 iLen) in D:\TIMES\Classes\Functions.vb:380
TIMES.TIMES.Controls.NewsList.Page_Load(Object sender, EventArgs e) in D:\TIMES\Controls\NewsList.ascx.vb:28
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain(
{
StringBuilder sbTemp = new StringBuilder();
char[] acTemp = sOrig.ToCharArray();
foreach(char cTemp in acTemp)
{
if(iLen<0)
break;
if((int)cTemp>255)
iLen -= 2;
else
iLen --;
sbTemp.Append(cTemp);
}
if(iLen>0)
return sbTemp.ToString();
else
return sbTemp.ToString()+"...";
}
public static int LenB(string sOrig)
{
int iLenB = 0;
char[] acTemp;
acTemp = sOrig.ToCharArray();
foreach(char cTemp in acTemp)
if((int)cTemp>255)
iLenB += 2;
else
iLenB ++;
return iLenB;
}VB.NET代码:
Public Shared Function Cut(ByVal sOrig As String, ByVal iLen As Integer) As String
Dim sbTemp As New StringBuilder
Dim acTemp As Char() = sOrig.ToCharArray()
Dim cTemp As String
For Each cTemp In acTemp
If iLen < 0 Then
Exit For
End If
If CInt(cTemp) > 255 Then
iLen -= 2
Else
iLen -= 1
End If
sbTemp.Append(cTemp)
Next cTemp
If iLen > 0 Then
Return sbTemp.ToString()
Else
Return sbTemp.ToString() + "..."
End If
End Function
Public Shared Function LenB(ByVal sOrig As String) As Integer
Dim iLenB As Integer = 0
Dim acTemp() As Char
acTemp = sOrig.ToCharArray()
Dim cTemp As String
For Each cTemp In acTemp
If CType(cTemp > 255, Integer) Then
'If CInt(cTemp) > 255 Then
iLenB += 2
End If
Next
If CType(cTemp <= 255, Integer) Then
iLenB = iLenB + 1
Return iLenB
End If
End Function上面的VB.NET的代码是我找顶上C#的改的,语法上面没有什么错误了。可是在通过编译之后运行调试出现如下错误。我不会改,哪位高手帮帮我.输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误:
行 378: Exit For
行 379: End If
行 380: If CInt(cTemp) > 255 Then
行 381: iLen -= 2
行 382: Else
源文件: D:\TIMES\Classes\Functions.vb 行: 380 堆栈跟踪:
[FormatException: 输入字符串的格式不正确。]
Microsoft.VisualBasic.CompilerServices.DoubleType.Parse(String Value, NumberFormatInfo NumberFormat)
Microsoft.VisualBasic.CompilerServices.DoubleType.Parse(String Value)
Microsoft.VisualBasic.CompilerServices.IntegerType.FromString(String Value)[InvalidCastException: 从字符串“为”到类型“Integer”的强制转换无效。]
Microsoft.VisualBasic.CompilerServices.IntegerType.FromString(String Value)
TIMES.TIMES.Functions.Cut(String sOrig, Int32 iLen) in D:\TIMES\Classes\Functions.vb:380
TIMES.TIMES.Controls.NewsList.Page_Load(Object sender, EventArgs e) in D:\TIMES\Controls\NewsList.ascx.vb:28
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain(
解决方案 »
- 【奇怪】关于if判断的怪现象
- Visual Studio 2005
- 接口的问题
- datagridview的滚动条可以重写吗
- 如何使用C# 在不下载文件的前提下,读取网络上某个文件的信息。虚心请教~~
- 咨询.net专业类库、AJAX、重写url的学习方法
- Update 无法找到 TableMapping['Table'] 或 DataTable“Table”
- .net稳定性太差,经常死!我都不敢用它做项目了
- 我的 asp.net 应用程序的控件不见了
- 请问知道chinaasp得论坛网址吗?谢谢
- 在一个asp.net项目中(如myweb),怎么用javascript执行c#写的一个类(如test)
- 如何判断查询的数据集为空?
中文“为”不能直接转换成Integer型的;
Public Shared Function Cut(ByVal sOrig As String, ByVal iLen As Integer) As String
Dim sbTemp As New StringBuilder
Dim acTemp As Char() = sOrig.ToCharArray()
Dim cTemp As Char
For Each cTemp In acTemp
If iLen < 0 Then
Exit For
End If
If Convert.ToInt32(cTemp) > 255 Then
iLen -= 2
Else
iLen -= 1
End If
sbTemp.Append(cTemp)
Next cTemp
If iLen > 0 Then
Return sbTemp.ToString()
Else
Return sbTemp.ToString() + "..."
End If
End Function
Public Shared Function LenB(ByVal sOrig As String) As Integer
Dim iLenB As Integer = 0
Dim acTemp() As Char
Dim tempt As Integer
acTemp = sOrig.ToCharArray()
Dim cTemp As Char
For Each cTemp In acTemp
tempt = Convert.ToInt32(cTemp)
If tempt > 255 Then
iLenB += 2
End If
Next
If Asc(cTemp) <= 255 Then
iLenB = iLenB + 1
Return iLenB
End If
End Function
End Class