C# String字符串
C#(静态String类)
C#中提供了比较全面的字符串处理方法,很多函数都进行了封装为我们的编程工作提供了很大的便利。System.String是最常用的字符串操作类,可以帮助开发者完成绝大部分的字符串操作功能,使用方便。
1. 比较字符串
比较字符串是指按照字典排序规则,判定两个字符的相对大小。按照字典规则,在一本英文字典中,出现在前面的单词小于出现在后面的单词。在String类中,常用的比较字符串的方法包括Compare、CompareTo、CompareOrdinal以及Equals,下面进行详细介绍。
Compare方法是String类的静态方法,用于全面比较两个字符串对象,包括6种重载方法。CompareTo方法将当前字符串对象与另一个对象做比较,其作用与Compare类似,返回值也相同。CompareTo与Compare相比,区别在于:CompareTo不是静态方法,可以通过一个String对象调用;CompareTo没有重载形式,只能按照大小写敏感方式比较两个整串。
Equals方法用于方便地判定两个字符串是否相同,有两种重载形式:
public boolEquals(string)
public static boolEquals(string,string)
如果两个字符串相等,Equals()返回值为True;否则,返回False。
String支持两个比较运算符“==”、“!=”,分别用于判定两个字符是否相等和不等,并区分大小写。相对于上面介绍的方法,这两个运算符使用起来更加直观和方便。下例中,使用“==”、“!=”对“Hello”和“World”进行比较。
2. 定位字符串和子串
定位子串是指在一个字符串寻找其中包含的子串或者某个字符,在String类中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny /LastIndexOf下面进行详细介绍。
StartWith/EndsWithStartWith方法
可以判定一个字符串对象是否以另一个子字符串开头,如果是返回True;否则返回False。其定义为:
Public bool StartsWith(string value) //其中,参数value即待判定的子字符串。
IndexOf/LastIndexOf
IndexOf方法用于搜索一个字符串,某个特定的字符或子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。共有如下6种重载形式。
定位字符:
- intIndexOf(charvalue)
- intIndexOf(charvalue,intstartIndex)
- intIndexOf(charvalue,intstartIndex,intcount)
定位子串:
- intIndexOf(stringvalue)
- intIndexOf(stringvalue,intstartIndex)
- intIndexOf(stringvalue,intstartIndex,intcount)
在上述重载形式中,其参数含义如下:
Value:待定位的字符或者子串。
startIndex:在总串中开始搜索的起始位置。
Count:在总串中从起始位置开始搜索的字符数。
IndexOfAny/LastIndexOfAnyIndexOfAny方法
其功能同IndexOf类似,区别在于,可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。同样,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包括这个字符或子串,则返回-1。IndexOfAny有3种重载形式:
- intIndexOfAny(char[] anyOf)
- intIndexOf(char[] anyOf,intstartIndex)
- intIndexOf(char[] anyOf,intstartIndex,intcount)
在上述重载形式中,参数含义如下:
anyOf:待定位的字符数组,方法将返回这个数组中任意一个字符第一次出现的位置。
startIndex:在总串中开始搜索的起始位置。
Count:在总串中从起始位置开始搜索的字符数。
3. 格式化字符串
Format方法用于创建格式化的字符串以及连接多个字符串对象。Foramt方法也有多个重载形式,最常用的为:
public static string Format(string format,params object[] args);
其中,参数format用于指定返回字符串的格式,而args为一系列变量参数。可以通过下面的实例来掌握其使用方法。
newStr="";
newStr=String.Format("{0},{1}!",strA,strB);
Console.WriteLine(newStr);//Hello,World!
在format参数中包含一些用大括号括起来的数字,如{0}、{1},这些数字分别一一对应于args参数数组中的变量。在生成结果字符串时,将使用这些变量代替{i}。需要说明的是,这些变量并不要求必须为String类型。在特定的应用中,Format方法非常方便。例如,想要输出一定格式的时间字符串,便可以使用Format方法,如下面代码所示。
newStr=String.Format("CurrentTime={0:yyyy-MM-dd}",System.DateTime.Now);
Console.WriteLine(newStr);//形如:2006-05-19
其中,格式字符串“yyyy-MM-dd”指定返回时间的格式形如“2006-05-19”,其定义参考System.Globalization.DateTimeFormatInfo类。
4. 连接字符串
Concat方法
Concat方法用于连接两个或多个字符串。Concat方法也有多个重载形式,最常用的为:public static string Concat(paramsstring[] values);其中,参数values用于指定所要连接的多个字符串,可以通过下面的实例来掌握其使用方法。
//ConcatnewStr="";
newStr=String.Concat(strA," ",strB);
Console.WriteLine(newStr);//“Hello World"
Join方法
Join方法利用一个字符数组和一个分隔符串构造新的字符串。常用于把多个字符串连接在一起,并用一个特殊的符号来分隔开。Join方法的常用形式为:public static string Join(stringseparator,string[] values);其中,参数value为指定的分隔符,而values用于指定所要连接的多个字符串数组,下例用“^^”分隔符把“Hello”和“World”连起来。
//Join
newStr="";
String[] strArr={strA,strB};
newStr=String.Join("^^",strArr);
Console.WriteLine(newStr);//"Hello^^World"
连接运算符“+”
String支持连接运算符“+”,可以方便地连接多个字符串,例如,下例把“Hello”和“World”连接起来。
newStr="";
newStr=strA+strB;
Console.WriteLine(newStr);//"HelloWorld"
5. 分隔字符串
使用前面介绍的Join方法,可以利用一个分隔符把多个字符串连接起来。反过来,使用Split方法可以把一个整串,执照某个分隔符,分裂成一系列小的字符串。例如,把整串,按照某个分隔符,分裂成一系列小的字符串。例如,把整串“Hello^^World”按照字符“^”进行分裂,可以得到3个小的字符串,即“Hello”、“”(空串)和“World”。
Split有多个重载形式,最常用的形式为:
public string[] Split(paramschar[] separator);
其中,参数separator数组包含分隔符。下例把“Hello^^World”进行分裂
//Split
newStr="Hello^^World";
char[] separator={'^'};
String[] splitStrings=new String[100];
splitStrings=newStr.Split(separator);
inti=0;
while(i<splitStrings.Length)
{
Console.WriteLine("item{0}:{1}",i,splitStrings[i]);
i++;
}
输出结果如下:Item0:Hello Item1: Item2:World
6. 插入和填充字符串
String类包含了在一个字符串中插入新元素的方法,可以用Insert方法在任意插入任意字符。Insert方法用于在一个字符串的指定位置插入另一个字符串,从而构造一个新的串。Insert方法也有多个重载形式,最常用的为:
public string Insert(intstartIndex,stringvalue);
其中,参数startIndex用于指定所要插入的位置,从0开始索引;value指定所要插入的字符串。下例中,在“Hello”的字符“H”后面插入“World”,构造一个串“HWorldello”。
//Insert
newStr="";
newStr=strA.Insert(1,strB);
Console.WriteLine(newStr);//"HWorldello"
7. 删除和剪切字符串
Remove方法
Remove方法从一个字符串的指定位置开始,删除指定数量的字符。最常用的形式为:
public string Remove(intstartIndex,intcount);
其中,参数startIndex用于指定开始删除的位置,从0开始索引;count指定删除的字符数量。下例中,把“Hello”中的“ell”删掉。
//RemovenewStr="";newStr=strA.Remove(1,3);
Console.WriteLine(newStr);//"Ho"
Trim/TrimStart/TrimEnd
Trim方法
若想把一个字符串首尾处的一些特殊字符剪切掉,如去掉一个字符串首尾的空格等,可以使用String的Trim()方法。其形式如下:
public string Trim();
public string Trim(paramschar[] trimChars);
其中,参数trimChars数组包含了指定要去掉的字符,如果缺省,则删除空格符号。下例中,实现了对“@Hello#$”的净化,去掉首尾的特殊符号。
//Trim
newStr="";
char[] trimChars={'@','#','$',' '};
String strC="@Hello# $";
newStr=strC.Trim(trimChars);
Console.WriteLine(newStr);//"Hello"
另外,同Trim类似,TrimStart和TrimEnd分别剪切掉一个字符串开头和结尾处的特殊字符。
8. 复制字符串
String类包括了复制字符串方法Copy和CopyTo,可以完成对一个字符串及其一部分的复制操作。
Copy方法
若想把一个字符串复制到另一个字符数组中,可以使用String的静态方法Copy来实现,其形式为:public string Copy(stringstr);其中,参数str为需要复制的源字符串,方法返回目标字符串。
CopyTo方法
CopyTo方法可以实现Copy同样的功能,但功能更为丰富,可以复制字符串的一部分到一个字符数组中。另外,CopyTo不是静态方法,其形式为:
public void CopyTo(intsourceIndex,char[] destination,intdestinationIndex,intcount);
其中,参数sourceIndex为需要复制的字符起始位置,destination为目标字符数组,destinationIndex指定目标数组中的开始存放位置,而count指定要复制的字符个数。
下例中,把strA字符串“Hello”中的“ell”复制到newCharArr中,并在newCharArr中从第2个元素开始存放。
char[] newCharArr=new char[100];
strA.CopyTo(2,newCharArr,0,3);
Console.WriteLine(newCharArr);//"Hel"
9. 替换字符串
要替换一个字符串中的某些特定字符或者某个子串,可以使用Replace方法来实现,其形式为:
public string Replace(char oldChar, char newChar);
public string Replace(string oldValue, string newValue);
其中,参数oldChar和oldValue为待替换的字符和子串,而newChar和newValue为替换后的新字符和新子串。下例把“Hello”通过替换变为“Hero”。
//Replace
newStr=strA.Replace("ll","r");
Console.WriteLine(newStr);
10. 更改大小写
String提供了方便转换字符串中所有字符大小写的方法ToUpper和ToLower。这两个方法没有输入参数,使用也非常简单。下例首先把“Hello”转换为“HELLO”,然后再变为小写形式“hello”。
本节介绍了最常用的String类,并从比较、定位子串、格式化、连接、分裂、插入、删除、复制、大小写转换10个方面介绍了其方法。之所以称String对象为静态串,是因为一旦定义一个String对象,就是不可改变的。在使用其方法(如插入、删除操作)时,都要在内在中创建一个新的String对象,而不是在原对象的基础上进行修改,这就需要开辟新的内存空间。如果需要经常进行串修改操作,使用String类无疑是非常耗费资源的,这时需要使用StringBuilder类。
C# String字符串的更多相关文章
- Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0
课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值 String str=& ...
- [CareerCup] 1.3 Permutation String 字符串的排列
1.3 Given two strings, write a method to decide if one is a permutation of the other. 这道题给定我们两个字符串,让 ...
- 03-Java String字符串详解
1.Java字符串String A.实例化String字符串:直接赋值(更合理一些,使用较多).使用关键字new. B.String内容的比较 // TODO Auto-generated metho ...
- C++学习38 string字符串的增删改查
C++ 提供的 string 类包含了若干实用的成员函数,大大方便了字符串的增加.删除.更改.查询等操作. 插入字符串 insert() 函数可以在 string 字符串中指定的位置插入另一个字符串, ...
- C++学习37 string字符串的访问和拼接
访问字符串中的字符 string 字符串也可以像字符串数组一样按照下标来访问其中的每一个字符.string 字符串的起始下标仍是从 0 开始.请看下面的代码: #include <iostrea ...
- java String字符串——进度1
String字符串 在JAVA中提供了多种创建字符串对象的方法,这里介绍最简单的两种, 第一种是直接赋值, 第二种是使用String类的构造方法: 如下所示: Strin ...
- 关于String字符串反转
这是网上看到的一篇java面试题中的问题: 问题是: 如何将一个String字符串反转. String str = "1234567"; int length = str.leng ...
- JavaScript的内置对象(Date日期+string字符串)基础语法总结
1.Date日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 1)定义一个时间对象 : var Udate=new Date(); //注意:使用关键字new,Date()的首 ...
- 【转】String字符串相加的问题
String字符串相加的问题 前几天同事跟我说我之前写的代码中在操作字符串时候,使用字符串相加的方式而不是使用StringBuffer或者StringBuilder导致内存开销很大.这个问题一直在困扰 ...
- 从零开始学习前端JAVASCRIPT — 3、JavaScript基础string字符串介绍
1:字符串 JS中的任何数据类型都可以当作对象来看.所以string既是基本数据类型,又是对象. 2:声明字符串 基本数据类型:var sStr = '字符串'; 对象的方法:var oStr = n ...
随机推荐
- jquery写tab切换,三行代码搞定
<script type="text/javascript"> $("button").on("click",function( ...
- 发现一个animate的小应用
<script src="jquery-1.11.1.js"></script> <script> //animate() : //第一个参数 ...
- 基于spring boot的统一异常处理
一.springboot的默认异常处理 Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容. 例如这里我 ...
- PAT 甲级 1015 Reversible Primes(20)
1015 Reversible Primes(20 分) A reversible prime in any number system is a prime whose "reverse& ...
- phpstorm+xdebug调试代码
1工具 #phpstorm 前面有文章介绍如何安装 #phpStudy 官网下的2018最新的安装包,php环境使用的也是最新的php7.0nts 2开启php Xdebug拓展 开启拓展,phpSt ...
- hdu 1735(贪心) 统计字数
戳我穿越:http://acm.hdu.edu.cn/showproblem.php?pid=1735 对于贪心,二分,枚举等基础一定要掌握的很牢,要一步一个脚印走踏实 这是道贪心的题目,要有贪心的意 ...
- Nginx 如何设置反向代理
网络结构如上图.可能你只有一个公网的Ip地址. 但是您的内网有个网站需要映射至外网.而又不想添加其它的非80端口.则你可以直接使用nginx来做反向代理即可.首先,配置nginx.conf文件. ht ...
- python——ADSL拨号程序
这是一个简单的测试实例 说说应用场景吧,都是因为电信搞的奇葩网络结构. 宿舍有若干层,每一层楼的网络拓扑如上图所示,本来是没有问题的,一个楼层接近四十个用户,都拥有一个电信给的宽带拨号账号.但是问题是 ...
- Intellij idea 系列教程之破解方法
Intellij idea 系列教程之破解方法 Intellij idea 系列教程目录(https://www.cnblogs.com/binarylei/p/10347600.html) 到这个地 ...
- 专访UI中国认证设计师卤大湿 | 一位UI大师关于UI设计的思考
现如今,设计师可以说是一个自带光环的Title,很多深藏不漏的UI设计师们都在以自己的方式为产品设计做出贡献,卤大湿便是这其中之一. 精分青年卤大湿,这个在UI中国上是张酷酷的鲁迅头像的UI设计师,是 ...