请问各位高手C#如何判断一个字符串中中文和字母或数字的个数?

cupidcanon 2008-11-20 07:44:11
请问各位高手,C#如何判断一个包含中文、字母、数字、符号的字符串中的中文、字母、数字分别的个数?或者如何求出此字符串以UTF8编码后所占的字节数?
请尽量给出关键代码。
...全文
1212 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
止戈而立 2008-11-20
  • 打赏
  • 举报
回复
using System.Text.RegularExpressions;

private string GetResult(string str)
{
int len=str.Length;
str=Regex.Replace(str,"[a-zA-Z]","");
string result=(len-str.Length)+"个字母 ";
len=str.Length;
str=Regex.Replace(str,"[0-9]","");
result+=(len-str.Length)+"个数字 ";
len=str.Length;
str=Regex.Replace(str,"[\u4e00-\u9fa5]","");
result+=(len-str.Length)+"个中文";
return result;
}
huoxudong125 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 Fibona 的回复:]
utf8编码每一个字符,包括数字,字母,汉字都是占两个字节,所以也可以用
str.length*2来得到占用的字节数
[/Quote]
这个说法正确
还有可以参考encoding.utf8来转成byte数组
cupidcanon 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 Fibona 的回复:]
utf8编码每一个字符,包括数字,字母,汉字都是占两个字节,所以也可以用
str.length*2来得到占用的字节数
[/Quote]

UTF8不是每个字符都市两个字节数的,中文是三个字节,英文是一个,这个我已经验证过了。
Fibona 2008-11-20
  • 打赏
  • 举报
回复
utf8编码每一个字符,包括数字,字母,汉字都是占两个字节,所以也可以用
str.length*2来得到占用的字节数
wuyq11 2008-11-20
  • 打赏
  • 举报
回复
byte[] sarr = System.Text.Encoding.Default.GetBytes(s);
int len = sarr.Length;
「已注销」 2008-11-20
  • 打赏
  • 举报
回复
前段時間用java寫過那樣一段代碼
是根據字符的ASIIC碼區分的
除了中文其他的都能用ASIIC碼計算出個數
總數減計算出的就是中文的
至於C#怎么寫不太清楚
才上過3次課
沒有寫過那東西


import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Scanner {
public static void main(String args[]) throws Exception {
String str = new String();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
str = in.readLine();
int a = 0, b = 0, c = 0, d = 0;
for (int i = 0; i < str.length(); i++) {
char cha;
cha = str.charAt(i);
if (cha >= 65 && cha <= 90 | cha >= 97 && cha <= 122) {
System.out.println(str.subSequence(i, i + 1) + "為英文字母。");
a++;
} else if (cha == 32) {
System.out.println(str.subSequence(i, i + 1) + "為空格。");
b++;
} else if (cha >= 48 && cha <= 57) {
System.out.println(str.substring(i, i + 1) + "為數字。");
c++;
} else {
System.out.println(str.substring(i, i + 1) + "為其他字符。");
d++;
}
}
System.out.println("英文字母的個數為﹕" + a);
System.out.println("空格的個數為﹕" + b);
System.out.println("數字的個數為﹕" + c);
System.out.println("其他字符的個數為﹕" + d);
}
}
nbgcqlk 2008-11-20
  • 打赏
  • 举报
回复
public static string stringformat(string str,int n)
{
///
///格式化字符串长度,超出部分显示省略号,区分汉字跟字母。汉字2个字节,字母数字一个字节
///
string temp=string.Empty;
if(System.Text.Encoding.Default.GetByteCount(str)<=n)//如果长度比需要的长度n小,返回原字符串
{
return str;
}
else
{
int t=0;
char[] q=str.ToCharArray();
for(int i=0;i {
if((int)q[i]>=0x4E00 && (int)q[i]<=0x9FA5)//是否汉字
{
temp =q[i];
t =2;
}
else
{
temp =q[i];
t ;
}
}
return (temp "...");
}
}
网上找来的

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧