如"A中国人",我需要它返回7
而不是VB中的LEN返回的4或者LENB返回的8
而且.net中也没有lenb函数
请给出在asp.net中可以实现的方法
18 个解决方案
#1
String.Length
#2
???
#3
length是字符串长度
System.Text.Encoding.Default.GetByteCount()返回字节长度
System.Text.Encoding.Default.GetByteCount()返回字节长度
#4
//截取超长的字符串
//传入参数: allLength 允许的字符段总长度;
// prefixString 前一段字符;
// parentString 后一段字符;
#region public string GetStringChild(int allLength,string prefixString, string parentString)
public string GetStringChild(int allLength,string prefixString, string parentString)
{
string childString = parentString;
//设置总长度
int ALLLENGTH = allLength;
//实际取长度
int length;
if (prefixString.Length + parentString.Length > allLength + 1 )
{
length = ALLLENGTH - prefixString.Length;
childString = parentString.Substring(0, length) + "..";
}
return childString;
}
#endregion
//传入参数: allLength 允许的字符段总长度;
// prefixString 前一段字符;
// parentString 后一段字符;
#region public string GetStringChild(int allLength,string prefixString, string parentString)
public string GetStringChild(int allLength,string prefixString, string parentString)
{
string childString = parentString;
//设置总长度
int ALLLENGTH = allLength;
//实际取长度
int length;
if (prefixString.Length + parentString.Length > allLength + 1 )
{
length = ALLLENGTH - prefixString.Length;
childString = parentString.Substring(0, length) + "..";
}
return childString;
}
#endregion
#5
System.Text.UnicodeEncoding.GetByteCount 方法 (String)
String chars = "Unicode Encoding Example";
UnicodeEncodingUnicode = new UnicodeEncoding();
int byteCount = Unicode.GetByteCount(chars);
String chars = "Unicode Encoding Example";
UnicodeEncodingUnicode = new UnicodeEncoding();
int byteCount = Unicode.GetByteCount(chars);
#6
to 回复人: lonelydreamsym(惊梦) ( ) 信誉:100
用这个函数结果也不对
如:
同是汉字的"期"和"过",一个为1一个为2
System.Text.Encoding.Default.GetByteCount("期") =2
System.Text.Encoding.Default.GetByteCount("过") =1
用这个函数结果也不对
如:
同是汉字的"期"和"过",一个为1一个为2
System.Text.Encoding.Default.GetByteCount("期") =2
System.Text.Encoding.Default.GetByteCount("过") =1
#7
回复人: zjf_dl(飘香剑雨)
不行啊,跟上面结果一样
不行啊,跟上面结果一样
#8
帮你顶
str.ToLower().Length
把它全转代成小写再计算长度呢?
str.ToLower().Length
把它全转代成小写再计算长度呢?
#9
有小写汉字吗
#10
等一会告诉你结果,我也正在办这事在
#11
有小写汉字吗
有
.net认为有
要不怎么不报异常呢?
有
.net认为有
要不怎么不报异常呢?
#12
ASP.NET 有length
#13
排序正常
全角二个字的和半角三个字的可以区分
你用ArrayList 的一个例子olist
olist.Sort(new sortByLength())
你可以看看排序结果(汉字多的在前面)
public class sortByLength : IComparer
{
public int Compare(object x,object y)
{
if(((string)x).ToLower().Length > ((string)y).ToLower().Length)
return -1;
else if(((string)x).ToLower().Length == ((string)y).ToLower().Length)
return 0;
else
return 1;
}
}
排序前 :
一
二
半角
全角
半角一
全角二
排序后:
半角一
全角二
全角
半角
一
二
因为该排译是非稳定排序,同一长度位置发生了改变
全角二个字的和半角三个字的可以区分
你用ArrayList 的一个例子olist
olist.Sort(new sortByLength())
你可以看看排序结果(汉字多的在前面)
public class sortByLength : IComparer
{
public int Compare(object x,object y)
{
if(((string)x).ToLower().Length > ((string)y).ToLower().Length)
return -1;
else if(((string)x).ToLower().Length == ((string)y).ToLower().Length)
return 0;
else
return 1;
}
}
排序前 :
一
二
半角
全角
半角一
全角二
排序后:
半角一
全角二
全角
半角
一
二
因为该排译是非稳定排序,同一长度位置发生了改变
#14
to wildroseck
使用 GB2312 的 Encoding就可以了
使用 GB2312 的 Encoding就可以了
#15
Encoding.GetEncoding("GB2312").GetBytes("期")
#16
System.Text.Encoding.GetEncoding("GB2312").GetByteCount("A过");
#17
public static int GetByteSize( string s )
{
byte[] bytes = System.Text.Encoding.Default.GetBytes(s);
return bytes.Length;
}
{
byte[] bytes = System.Text.Encoding.Default.GetBytes(s);
return bytes.Length;
}
#18
多谢各位
特别是tiaoci(我挑刺,我快乐)
特别是tiaoci(我挑刺,我快乐)
#1
String.Length
#2
???
#3
length是字符串长度
System.Text.Encoding.Default.GetByteCount()返回字节长度
System.Text.Encoding.Default.GetByteCount()返回字节长度
#4
//截取超长的字符串
//传入参数: allLength 允许的字符段总长度;
// prefixString 前一段字符;
// parentString 后一段字符;
#region public string GetStringChild(int allLength,string prefixString, string parentString)
public string GetStringChild(int allLength,string prefixString, string parentString)
{
string childString = parentString;
//设置总长度
int ALLLENGTH = allLength;
//实际取长度
int length;
if (prefixString.Length + parentString.Length > allLength + 1 )
{
length = ALLLENGTH - prefixString.Length;
childString = parentString.Substring(0, length) + "..";
}
return childString;
}
#endregion
//传入参数: allLength 允许的字符段总长度;
// prefixString 前一段字符;
// parentString 后一段字符;
#region public string GetStringChild(int allLength,string prefixString, string parentString)
public string GetStringChild(int allLength,string prefixString, string parentString)
{
string childString = parentString;
//设置总长度
int ALLLENGTH = allLength;
//实际取长度
int length;
if (prefixString.Length + parentString.Length > allLength + 1 )
{
length = ALLLENGTH - prefixString.Length;
childString = parentString.Substring(0, length) + "..";
}
return childString;
}
#endregion
#5
System.Text.UnicodeEncoding.GetByteCount 方法 (String)
String chars = "Unicode Encoding Example";
UnicodeEncodingUnicode = new UnicodeEncoding();
int byteCount = Unicode.GetByteCount(chars);
String chars = "Unicode Encoding Example";
UnicodeEncodingUnicode = new UnicodeEncoding();
int byteCount = Unicode.GetByteCount(chars);
#6
to 回复人: lonelydreamsym(惊梦) ( ) 信誉:100
用这个函数结果也不对
如:
同是汉字的"期"和"过",一个为1一个为2
System.Text.Encoding.Default.GetByteCount("期") =2
System.Text.Encoding.Default.GetByteCount("过") =1
用这个函数结果也不对
如:
同是汉字的"期"和"过",一个为1一个为2
System.Text.Encoding.Default.GetByteCount("期") =2
System.Text.Encoding.Default.GetByteCount("过") =1
#7
回复人: zjf_dl(飘香剑雨)
不行啊,跟上面结果一样
不行啊,跟上面结果一样
#8
帮你顶
str.ToLower().Length
把它全转代成小写再计算长度呢?
str.ToLower().Length
把它全转代成小写再计算长度呢?
#9
有小写汉字吗
#10
等一会告诉你结果,我也正在办这事在
#11
有小写汉字吗
有
.net认为有
要不怎么不报异常呢?
有
.net认为有
要不怎么不报异常呢?
#12
ASP.NET 有length
#13
排序正常
全角二个字的和半角三个字的可以区分
你用ArrayList 的一个例子olist
olist.Sort(new sortByLength())
你可以看看排序结果(汉字多的在前面)
public class sortByLength : IComparer
{
public int Compare(object x,object y)
{
if(((string)x).ToLower().Length > ((string)y).ToLower().Length)
return -1;
else if(((string)x).ToLower().Length == ((string)y).ToLower().Length)
return 0;
else
return 1;
}
}
排序前 :
一
二
半角
全角
半角一
全角二
排序后:
半角一
全角二
全角
半角
一
二
因为该排译是非稳定排序,同一长度位置发生了改变
全角二个字的和半角三个字的可以区分
你用ArrayList 的一个例子olist
olist.Sort(new sortByLength())
你可以看看排序结果(汉字多的在前面)
public class sortByLength : IComparer
{
public int Compare(object x,object y)
{
if(((string)x).ToLower().Length > ((string)y).ToLower().Length)
return -1;
else if(((string)x).ToLower().Length == ((string)y).ToLower().Length)
return 0;
else
return 1;
}
}
排序前 :
一
二
半角
全角
半角一
全角二
排序后:
半角一
全角二
全角
半角
一
二
因为该排译是非稳定排序,同一长度位置发生了改变
#14
to wildroseck
使用 GB2312 的 Encoding就可以了
使用 GB2312 的 Encoding就可以了
#15
Encoding.GetEncoding("GB2312").GetBytes("期")
#16
System.Text.Encoding.GetEncoding("GB2312").GetByteCount("A过");
#17
public static int GetByteSize( string s )
{
byte[] bytes = System.Text.Encoding.Default.GetBytes(s);
return bytes.Length;
}
{
byte[] bytes = System.Text.Encoding.Default.GetBytes(s);
return bytes.Length;
}
#18
多谢各位
特别是tiaoci(我挑刺,我快乐)
特别是tiaoci(我挑刺,我快乐)