C# 字符串String相关
是否可以继承String类
不能,因为从定义上看String类是sealed类【密封】故不可以继承。
当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。若硬要写,则编译不通过
字符串字节长度、字符长度
string strTmp = "abcdefg某某某";
int i=System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10
解释:
一个汉字占两个字节,一个字母占一个字节;
String的Lenght属性表示字符的个数(不分中英文)。
字符串对象
String s = new String("xyz");创建了几个String Object
答:两个对象,一个是“xyz”,一个是指向“xyz”的引用对象s。
空字符串理解
String str1 = null; str引用为空
String str2 = ""; str引用一个空串
也就是null没有分配内存空间,""分配了内存空间,因此str1还不是一个实例化的对象,而str2已经实例化。
注意:null不是对象,""是对象。所以比较的时候必须是 if(str1==null){...}和if(str2.equals("")){...}。
对象用equals比较,null用等号比较。
因此,如果str1=null; 下面的写法错误:
if(str1.equals("")||str1==null)
{
//如果str1没有值,则....
//。。。。
}
正确的写法是:
if(str1==null||str1.equals(""))
{
//先判断是不是对象,如果是,再判断是不是空字符串
//...
}
打个比方:一个空玻璃杯,你不能说它里面什么都没有,因为里面有空气,当然也可以把它弄成真空,null与" "的区别就象真空与空气一样。
string与stringBuilder
String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。 因为一旦创建了该对象,就不能修改该对象的值。
在处理字符串时,最好使用stringBuilder类,其.NET命名空间是System.Text。该类并不是创建新的对象,而是通过append,remove,insert等方法直接对字符串进行操作,通过toString方法返回操作结果,因此当你需要大量拼接、删除、修改字符串时,使用stringBuilder可以优化性能。
数字转为百分数字符串(保留小数点后两位)
- C#代码, Int/double 至少一个不是int型
ToString("0.00%"); 或者ToString("p2");
- JS代码
((a/b)*100).toFixed(2) + '%'
判断字符串中汉字
方法1、用ASCII码判断
//在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下:
string text = "是不是汉字,ABC,柯乐义";
for (int i = ; i < text.Length; i++)
{
if ((int)text[i] > )
{
Console.WriteLine("是汉字");
}
else
{
Console.WriteLine("不是汉字");
}
}
方法2、用汉字的 UNICODE 编码范围判断
//汉字的 UNICODE 编码范围是4e00-9fbb,具体代码如下:
string text = "是不是汉字,ABC,keleyi.com";
char[] c = text.ToCharArray();
for (int i = ; i < c.Length; i++)
{
if (c[i] >= 0x4e00 && c[i] <= 0x9fbb)
{
Console.WriteLine("是汉字");
}
else
{
Console.WriteLine("不是汉字");
}
}
方法3、用正则表达式判断
//用正则表达式判断也是用汉字的 UNICODE 编码范围,具体代码如下:
string text = "是不是汉字,ABC,keleyi.com";
for (int i = ; i < text.Length; i++)
{
if (Regex.IsMatch(text[i].ToString(), @"[\u4e00-\u9fbb]+{1}"))
{
Console.WriteLine("是汉字");
}
else
{
Console.WriteLine("不是汉字");
}
}
最新文章
- C# - 多线程 之 Process与Thread与ThreadPool
- Spring_跨项目读取properties文件
- SQL Server 2008 R2数据库镜像部署
- NSUserDefaults standardUserDefaults的使用
- YUI Compressor for Sublime text2
- mysql使用笔记(四)
- DevExpress控件使用经验总结
- python(3)-计数器,有序字典
- Python图
- jdk1.7升级到jdk1.8后出错: [ERROR] javadoc: warning - Multiple sources of package comments found for package
- easyui常用控件及样式收藏
- Merge into的使用具体解释-你Merge了没有
- BZOJ 3529 数表(莫比乌斯反演)
- ping 计算机全名,返回的不是IP地址
- 使用腾讯云无服务器云函数(SCF)分析天气数据
- Coding theano under remote ubuntu server from local Mac (在本地mac机器上,写、跑、调试、看-远程ubuntu上的theano代码)
- 二、Windows 下 ShellCode 编写初步
- html问题汇总
- Vue(二十一)使用express模拟接口数据
- [AWS] SSO: Single sign-on