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# 字符串String相关的更多相关文章
- Python 字符串String相关知识
test.capitalize( ) |首字母大写 test.lower( ) |全部变成小写(只能处理英文字母) test.casefold( ) | ...
- Redis字符串(STRING)中BIT相关命令
上篇文章我们对STRING数据类型中一些基本的命令进行了介绍,但是没有涉及到BIT相关的命令,本文我们就来看看几个和BIT相关的命令. 本文是Redis系列的第四篇文章,了解前面的文章有助于更好的理解 ...
- 字符串string的相关应用
之所以抛弃char* 的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等, 而且作为一个泛型类出现,他集成的操作函数足以完成我们大多数情况下 ...
- C#字符串string以及相关内置函数
C#字符串string函数 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- [Java初探04]__字符串(String类)相关
前言 接下来将暂时将重心偏移向实际操作,不在将大量时间花费在详细的知识点整理上,将会简略知识总结笔记的记录,加强实际练习的时间,实例练习篇也不再同步进行,我会将部分我觉得重要的源码更新在每节知识点后面 ...
- C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)
在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...
- Java基础——数组应用之字符串String类
字符串String的使用 Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准Java类库中提供了一 ...
- JAVA基础5——与String相关的系列(1)
与String相关的系列 String, 是JAVA中常见的一个引用类型,且其具有一定的特殊性. String类型被设置为final型,即不可继承,也就不可修改其中的实现. String可以改变吗 S ...
- python字符串(string)方法整理
python中字符串对象提供了很多方法来操作字符串,功能相当丰富. print(dir(str)) [..........'capitalize', 'casefold', 'center', 'co ...
随机推荐
- Spring MVC拦截器完整代码示例
拦截器的作用: 编写一个自定义的类,实现相关拦截器接口: preHandler不放行,直接return false:直接跳转到错误页面error.jsp postHandler后置处理器,也就是C ...
- 「LibreOJ NOI Round #2」不等关系
「LibreOJ NOI Round #2」不等关系 解题思路 令 \(F(k)\) 为恰好有 \(k\) 个大于号不满足的答案,\(G(k)\) 表示钦点了 \(k\) 个大于号不满足,剩下随便填的 ...
- JAVA的枚举基本操作,对原码反码补码的理解及为运算的深入理解,浮点数计算的误差分析
①深入浅出的了解枚举类型 先看一段代码: enum Size{SMALL,MEDIUM,LARGE}; public class EnumTest { public static void main( ...
- Springboot打包执行源码解析
一.打包 Springboot打包的时候,需要配置一个maven插件[spring-boot-maven-plugin] <build> <plugins> <plugi ...
- 基于【 springBoot +springCloud+vue 项目】一 || 后端搭建
缘起 本项目是基于之前学习的一个Dubbo+SSM分布式项目进行升级,基于此项目对前后端分离项目.微服务项目进一步深入学习.之前学习了vue.springBoot.springCloud后,没有进行更 ...
- 如何通过Restful API的方式读取SAP Commerce Cloud的Product图片
需求:我在SAP Commerce Cloud的backoffice里给某product维护了一些图片: 分别位于Normal,Thumbnails和Others等字段: 现在我想通过Restful ...
- C++(四十一) — 多态、虚函数、虚析构函数、纯虚函数
1.多态 面向对象程序设计中,多态性表现为: (1)重载多态:函数重载.运算符重载: (2)运行多态:通过基类的指针(或引用)调用不同派生类的同名函数,表现出不同的行为: (3)模板多态:参数多态, ...
- RQM — 需求驱动的测试管理工具
嵌入式系统复杂程度越来越高,随之而来的测试要求和任务也越来越繁重,而测试更多的是对产品满足需求情况的测试,因此,在高强度.高频度的测试过程中,难免有需求遗漏.回归测试不充分.缺陷管理不合理.测试人员疏 ...
- [转]Serverless实践
转载的,原文: https://www.cnblogs.com/middleware/p/9470533.html ------------------------------------------ ...
- 怎么给win10进行分区?
新安装的win10系统的朋友,对于win10系统分区不满意应该如何是好呢?今天给大家介绍两种win10系统分区的方法,一个是windows自带分区管理软件来操作;另一个就是简单方便的分区助手来帮助您进 ...