是否可以继承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("不是汉字");
}
}

最新文章

  1. C# - 多线程 之 Process与Thread与ThreadPool
  2. Spring_跨项目读取properties文件
  3. SQL Server 2008 R2数据库镜像部署
  4. NSUserDefaults standardUserDefaults的使用
  5. YUI Compressor for Sublime text2
  6. mysql使用笔记(四)
  7. DevExpress控件使用经验总结
  8. python(3)-计数器,有序字典
  9. Python图
  10. jdk1.7升级到jdk1.8后出错: [ERROR] javadoc: warning - Multiple sources of package comments found for package
  11. easyui常用控件及样式收藏
  12. Merge into的使用具体解释-你Merge了没有
  13. BZOJ 3529 数表(莫比乌斯反演)
  14. ping 计算机全名,返回的不是IP地址
  15. 使用腾讯云无服务器云函数(SCF)分析天气数据
  16. Coding theano under remote ubuntu server from local Mac (在本地mac机器上,写、跑、调试、看-远程ubuntu上的theano代码)
  17. 二、Windows 下 ShellCode 编写初步
  18. html问题汇总
  19. Vue(二十一)使用express模拟接口数据
  20. [AWS] SSO: Single sign-on

热门文章

  1. docker (二):容器container
  2. 中国大学MOOC-翁恺-C语言程序设计习题集(一)
  3. Spring AOP 创建Advice 基于Annotation
  4. Cookie 和 Session 总结
  5. css盒模型。边框和内外边距
  6. python3 中的try 异常调试与 raise 异常抛出
  7. 如何通过Restful API的方式读取SAP Commerce Cloud的Product Reference
  8. 批处理引擎MapReduce应用案例
  9. Kali下进行局域网断网攻击
  10. pip---cannot import name main解决方案