c#字符串操作方法实例
# 字符串是使用 string 关键字声明的一个字符数组。字符串是使用引号声明的,如下例所示:
string s = "Hello, World!";
字符串对象是“不可变的”,即它们一旦创建就无法更改。对字符串进行操作的方法实际上返回的是新的字符串对象。因此,出于性能方面的原因,大量的连接或其他涉及字符串的操作应当用 StringBuilder 类执行,如下所示:
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("one ");
sb.Append("two ");
sb.Append("three");
string str = sb.ToString();
二、字符串使用
1、转移字符“\”
字符串中可以包含转义符,如“\n”(新行)和“\t”(制表符)。
如果希望包含反斜杠,则它前面必须还有另一个反斜杠,如“\\”。
2、“@”符号
@ 符号会告知字符串构造函数忽略转义符和分行符。
因此,以下两个字符串是完全相同的:
string p1 = "\\\\My Documents\\My Files\\";
string p2 = @"http://www.cnblogs.com/xianspace/admin/file://my/ Documents\My Files\";
3、ToString()
如同所有从 Object 派生的对象一样,字符串也提供了 ToString 方法,用于将值转换为字符串。此方法可用于将数值转换为字符串,如下所示:
int year = 1999;
string msg = "Eve was born in " + year.ToString();
System.Console.WriteLine(msg); // outputs "Eve was born in 1999"
另外,可以通过参数格式化ToString()的显示输出。如,对于时间类型格式,可以通过ToString()方法自定义时间显示格式。如:
System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
//outputs "2009-03-11 18:05:16.345"
//"MM":指定月份为2位字符串,不足2位则前方补"0";"M":为月份数值转换的字符串;
//"HH":表示24小时制的小时;"hh"表示12小时制的小时;
4、SubString()
格式:Substring(int startindex, int len)
用于获取源字符串指定起始位置startindex,指定长度len的字符串。
参数Startindex索引从0开始,且最大值必须小于源字符串的长度,否则会编译异常;
参数len的值必须不大于源字符串索引指定位置开始,之后的字符串字符总长度,否则会出现异常;
示例:
string s4 = "Visual C# Express";
System.Console.WriteLine(s4.Substring(7, 2)); // outputs "C#" ,C为第八个字符
System.Console.WriteLine(s4.Replace("C#", "Basic")); // outputs "Visual Basic Express"
5、Replace()
格式:Replace(string oldValue, string newValue)
用于字符串中特定字符串组合的替换,即将源字符串中的所有oldValue 字符串替换为 newValue 字符串。
示例:
string s5 = "Visual C# Express";
System.Console.WriteLine(s5.Replace("C#","VB")); // outputs "Visual VB Express"
6、Split()
将字符串拆分为子字符串(如将句子拆分为各个单词)是一个常见的编程任务。Split() 方法使用分隔符(如空格字符)char 数组,并返回一个子字符串数组。您可以使用 foreach 访问此数组。
示例:
char[] delimit = new char[] { ' ' };
string s14 = "The cat sat on the mat.";
foreach (string substr in s14.Split(delimit)) //使用空格拆分
{
System.Console.WriteLine(substr);
}
此代码将在单独的行上输出每个单词,如下所示:
The
cat
sat
on
the
mat.
下面的代码示例演示如何使用 System.String.Split 方法分析字符串。此方法返回一个字符串数组,其中每个元素是一个单词。作为输入,Split 采用一个字符数组指示哪些字符被用作分隔符。本示例中使用了空格、逗号、句点、冒号和制表符。一个含有这些分隔符的数组被传递给 Split,并使用结果字符串数组分别显示句子中的每个单词。
示例:
1 class TestStringSplit
2
3 {
4
5 static void Main()
6
7 {
8
9 char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
10
11
12
13 string text = "one\ttwo three:four,five six seven";
14
15 System.Console.WriteLine("Original text: '{0}'", text);
16
17
18
19 string[] words = text.Split(delimiterChars);
20
21 System.Console.WriteLine("{0} words in text:", words.Length);
22
23
24
25 foreach (string s in words)
26
27 {
28
29 System.Console.WriteLine(s);
30
31 }
32
33 }
34
35 }
36
37
38
输出:
Original text: 'one two three:four,five six seven'
7 words in text:
one
two
three
four
five
six
seven
另外,还可通过正则表达式Regex.Split()的方法,通过字符串分隔字符串。
示例:
using System.Text.RegularExpressions; //需要引用正则表达式的命名空间
string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase); //正则表达式
// RegexOptions.IgnoreCase 表示忽略字母大小写
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
输出:
aaa
bbb
ccc
7、Trim()
Trim() 从当前 String 对象移除所有前导空白字符和尾部空白字符。
示例:
string s7 = " Visual C# Express ";
System.Console.WriteLine(s7); // outputs " Visual C# Express "
System.Console.WriteLine(s7.Trim()); // outputs "Visual C# Express"
8、ToCharArray()
格式:ToCharArray(int startindex,int len)
用于将字符复制到字符数组。用于修改字符串等
示例:
string s8 = "Hello, World";
char[] arr = s8.ToCharArray(0, s8.Length);
foreach (char c in arr)
{
System.Console.Write(c); // outputs "Hello, World"
}
示例:修改字符串内容
字符串是不可变的,因此不能修改字符串的内容。但是,可以将字符串的内容提取到非不可变的窗体中,并对其进行修改,以形成新的字符串实例。
下面的示例使用 ToCharArray 方法来将字符串的内容提取到 char 类型的数组中。然后修改此数组中的某些元素。之后,使用 char 数组创建新的字符串实例。
class ModifyStrings
{
static void Main()
{
string str = "The quick brown fox jumped over the fence";
System.Console.WriteLine(str);
char[] chars = str.ToCharArray();
int animalIndex = str.IndexOf("fox");
if (animalIndex != -1)
{
chars[animalIndex++] = 'c';
chars[animalIndex++] = 'a';
chars[animalIndex] = 't';
}
string str2 = new string(chars);
System.Console.WriteLine(str2);
}
}
输出:
The quick brown fox jumped over the fence
The quick brown cat jumped over the fence
9、利用索引访问字符串中的各个字符
格式:str[int index]
示例:逆序排列字符串
string s9 = "Printing backwards";
for (int i = 0; i < s9.Length; i++)
{
System.Console.Write(s9[s9.Length - i - 1]); // outputs "sdrawkcab gnitnirP"
}
10、更改大小写,ToUpper() 和 ToLower()
若要将字符串中的字母更改为大写或小写,可以使用 ToUpper() 或 ToLower()。如下所示:
string s10 = "Battle of Hastings, 1066";
System.Console.WriteLine(s10.ToUpper()); // outputs "BATTLE OF HASTINGS 1066"
System.Console.WriteLine(s10.ToLower()); // outputs "battle of hastings 1066"
11、比较
比较两个字符串的最简单方法是使用 == 和 != 运算符,执行区分大小写的比较。
string color1 = "red";
string color2 = "green";
string color3 = "red";
if (color1 == color3)
{
System.Console.WriteLine("Equal");
}
if (color1 != color2)
{
System.Console.WriteLine("Not equal");
}
12、CompareTo()
字符串对象也有一个 CompareTo() 方法,它根据某个字符串是否小于 (<) 或大于 (>) 另一个,返回一个整数值(小于0或大于等于0)。比较字符串时使用 Unicode 值,小写的值小于大写的值。示例:
string s121 = "ABC";
string s122 = "abc";
if (s121.CompareTo(s122) > 0)
{
System.Console.WriteLine("Greater-than");
}
else
{
System.Console.WriteLine("Less-than");
}
13、字符串索引 IndexOf()。
若要在一个字符串中搜索另一个字符串,可以使用 IndexOf()。如果未找到搜索字符串,IndexOf() 返回 -1;否则,返回它出现的第一个位置的索引(从零开始)。
示例:
string s13 = "Battle of Hastings, 1066";
System.Console.WriteLine(s13.IndexOf("Hastings")); // outputs 10 ,注意从0开始数起
System.Console.WriteLine(s13.IndexOf("1967")); // outputs -1
string 类型(它是 System.String 类的别名)为搜索字符串的内容提供了许多有用的方法。下面的示例使用 IndexOf、LastIndexOf、StartsWith 和 EndsWith 方法。
三、使用 StringBuilder
StringBuilder 类创建了一个字符串缓冲区,用于在程序执行大量字符串操作时提供更好的性能。StringBuilder 字符串还允许您重新分配个别字符,这些字符是内置字符串数据类型所不支持的。例如,此代码在不创建新字符串的情况下更改了一个字符串的内容:
示例:
System.Text.StringBuilder sb = new System.Text.StringBuilder("Rat: the ideal pet");
sb[0] = 'C';
System.Console.WriteLine(sb.ToString()); // displays Cat: the ideal pet
System.Console.ReadLine();
在以下示例中,StringBuilder 对象用于从一组数值类型中创建字符串。
示例:
class TestStringBuilder
{
static void Main()
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
// Create a string composed of numbers 0 - 9
for (int i = 0; i < 10; i++)
{
sb.Append(i.ToString());
}
System.Console.WriteLine(sb); // displays 0123456789
// Copy one character of the string (not possible with a System.String)
sb[0] = sb[9];
System.Console.WriteLine(sb); // displays 9123456789
}
}
四、正则表达式
可以使用 System.Text.RegularExpressions.Regex 类搜索字符串。这些搜索可以涵盖从非常简单到全面使用正则表达式的复杂范围。以下是使用 Regex 类搜索字符串的两个示例。有关更多信息,请参见 .NET Framework 正则表达式。
以下代码是一个控制台应用程序,用于对数组中的字符串执行简单的不区分大小写的搜索。给定要搜索的字符串和包含搜索模式的字符串后,静态方法 System.Text.RegularExpressions.Regex.IsMatch(System.String,System.String,System.Text.RegularExpressions.RegexOptions) 执行搜索。
在本例中,使用第三个参数指示忽略大小写。有关更多信息,请参见
以下代码是一个控制台应用程序,此程序使用正则表达式验证数组中每个字符串的格式。验证要求每个字符串具有电话号码的形式,即用短划线将数字分成三组,前两组各包含三个数字,第三组包含四个数字。这是通过正则表达式 ^\\d{3}-\\d{3}-\\d{4}$ 完成的。有关更多信息,请参见正则表达式语言元素。
五、联接多个字符串
有两种联接多个字符串的方法:使用 String 类重载的 + 运算符,以及使用 StringBuilder 类。+ 运算符使用方便,有助于生成直观的代码,但必须连续使用;每使用一次该运算符就创建一个新的字符串,因此将多个运算符串联在一起效率不高。
示例:
string two = "two";
string str = "one " + two + " three";
System.Console.WriteLine(str);
尽管在代码中只出现了四个字符串,三个字符串联接在一起,最后一个字符串包含全部三个字符串,但总共要创建五个字符串,因为首先要将前两个字符串联接,创建一个包含前两个字符串的字符串。第三个字符串是单独追加的,形成存储在 str 中的最终字符串。
也可以使用 StringBuilder 类将每个字符串添加到一个对象中,然后由该对象通过一个步骤创建最终的字符串。下面的示例对此策略进行了演示。
示例:
下面的代码使用 StringBuilder 类的 Append 方法来联接三个字符串,从而避免了串联多个 + 运算符的弊端。
示例:
class StringBuilderTest
{
static void Main()
{
string two = "two";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("one ");
sb.Append(two);
sb.Append(" three");
System.Console.WriteLine(sb.ToString());
string str = sb.ToString();
System.Console.WriteLine(str);
}
}
c#字符串操作方法实例的更多相关文章
- [转] shell字符串操作方法,以及实例
每一种语言都有他独自的字符串操作方法,shell也一样,下面以以例子的方式,简单介绍常用方法. 1,取得字符串长度 string=abc12342341 //等号二边不要有空格 echo ${#str ...
- Python 字符串操作方法大全
Python 字符串操作方法大全 1.去空格及特殊符号复制代码代码如下:s.strip().lstrip().rstrip(',') 2.复制字符串复制代码代码如下:#strcpy(sStr1,sSt ...
- Java生成MD5加密字符串代码实例
这篇文章主要介绍了Java生成MD5加密字符串代码实例,本文对MD5的作用作了一些介绍,然后给出了Java下生成MD5加密字符串的代码示例,需要的朋友可以参考下 (1)一般使用的数据库中都会保存用 ...
- C++中vector容器的常用操作方法实例总结
C++中vector容器的常用操作方法实例总结 参考 1. C++中vector容器的常用操作方法实例总结: 完
- repr方法字符串输出实例对象的值
#coding=utf-8 #repr方法字符串输出实例对象的值 class CountFromBy(object): def __init__(self, val=0, incr=1): self. ...
- js字符串操作方法
1.字符方法: str.charAt(): 可以访问字符串中特定的字符,可以接受0至字符串长度-1的数字作为参数,返回该位置下的字符,如果参数超出该范围,返回空字符串,如果没有参数,返回位置为0的字符 ...
- Java字符串操作方法集
常用Java字符串操作方法 String s="Hello" String s2="World" 操作 方法 使用方法 结果 字符串截取 substring ...
- Python正则表达式如何进行字符串替换实例
Python正则表达式如何进行字符串替换实例 Python正则表达式在使用中会经常应用到字符串替换的代码.有很多人都不知道如何解决这个问题,下面的代码就告诉你其实这个问题无比的简单,希望你有所收获. ...
- js字符串操作方法集合
1.字符方法: str.charAt(): 可以访问字符串中特定的字符,可以接受0至字符串长度-1的数字作为参数,返回该位置下的字符,如果参数超出该范围,返回空字符串,如果没有参数,返回位置为0的字符 ...
随机推荐
- 2013-09-22 [随笔]-Roy
不能因为一些小事情而一直影响自己的心情. 每天过得都应该有重点,无论是家庭还是工作还是其他. 要多花时间去吸取些新东西,看书,丰富自己的想法. 不能让日常的乱七八糟影响心情. bingo!
- linux-9基本命令之-查看系统负载 uptime
uptime 查看系统负载 uptime @1.查看每一秒的刷新一次系统负载运行情况 [root@localhost /]# watch -n uptime 系统当前时间 系统已运行时间 ...
- Select for update/lock in share mode 对事务并发性影响
select for update/lock in share mode 对事务并发性影响 事务并发性理解 事务并发性,粗略的理解就是单位时间内能够执行的事务数量,常见的单位是 TPS( transa ...
- easyui 折叠数据表格使用
因为要用到折叠数据表格 但是官网上的例子不能展示 费了好大劲 走了很多弯路 现在能显示出数据 以前大多都是看别人写的文章 自己解决问题的时候几乎没记录过 现在想想真不是好习惯 特此记录分享出来 有需要 ...
- PAT/图形输出习题集
B1027. 打印沙漏 (20) Description: 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ...
- EQueue - 详细谈一下消息持久化以及消息堆积的设计
前言 之前写了一篇文章,总体介绍了EQueue.在看这篇文章之前如果还没看过那篇文章,可能会看不懂这篇文章.所以建议没看过的朋友务必先看一下那篇文章中所提到的各种概念,这样才能更好的理解本文所说的内容 ...
- 可在广域网部署运行的QQ高仿版 -- GG2014 完美版!新增支持:聊天记录、好友分组、托盘闪动消息提醒、登录状态、GIF动态表情
距上次GG V3.7版本(可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天.控制更多相关细节)的发布,已经有50天了,这50天对于GG来说,是一个重大的飞跃.因为这段时间通过一些基 ...
- 在英文版操作系统中安装的MS SQL server,中文字段无法匹配
在英文版的操作系统中安装的MS SQL server,会出现中文字段无法被匹配到.其原因在于英文环境下安装的MS SQL server的排序规则不包括中文. 所以解决办法就是更改MS SQL serv ...
- vpn establish capability from a remote deskstop is disabled错误的解决办法
使用Cisco的VPN时,有时候会提示vpn establish capability from a remote deskstop is disabled.这样的错误,解决办法就是重启本机的Remo ...
- 分享一些Hadoop环境搭建所用到的软件
本来想用土的掉渣的语言说说hadoop配置的,因为最近总有人问我,环境搭建老出莫名其妙的问题,可是写到一半,还是决定不写了,网上教程好多好多,而大家遇到问题有很多是软件版本不对应造成的,因此我就把大家 ...