C# 字符串

string 类型表示 Unicode 字符的字符串

C# 字符串是使用 string 关键字声明的一个字符数组。字符串是使用双引号声明的,单个字符使用单引号如下例所示:

string s = "Hello, World!";
char c = '@'; 基本字符串操作 创建新字符串


方法名 使用

String.Format

从一组输入对象生成格式化的字符串。

String.Concat

从两个或多个字符串生成字符串。

String.Join

通过合并字符串数组生成新字符串。

String.Insert

通过将一个字符串插入到现有字符串的指定索引处生成新的字符串。

String.CopyTo

String.CopyTo 方法将字符串的一些部分复制到一个字符数组中。可以同时指定字符串的开始索引和要复制的字符数。此方法带有四个参数,即源索引、字符数组、目标索引和要复制的字符数。所有索引都是从零开始的。

String.Format("{0},China {1}",var1,var2); {}中数字必须从0开始
String.Concat(str1," and ",str2);
string[] MyString = {"Hello", "and", "welcome", "to", "my" , "world!"};
Console.WriteLine(String.Join(" ", MyString));
MyString.CopyTo(0, MyCharArray,0 ,5);

剪裁和移除字符

方法名 使用

String.Trim

从字符串的开头和结尾处移除空白。

String.TrimEnd

从字符串的结尾处移除在字符数组中指定的字符。

String.TrimStart

从字符串的开头移除在字符数组中指定的字符。

String.Remove

从字符串中的指定索引位置移除指定数量的字符。


填充字符串

  • String.PadLeft 右对齐并填充字符串,以使字符串最右侧的字符到该字符串的开头为指定的距离。
  • string MyString = "Hello World!"; Console.WriteLine(MyString.PadLeft(20, '-'));
    
    
  • String.PadRight 左

比较字符串


方法名 使用

String.Compare

比较两个字符串的值。返回整数值。

String.CompareOrdinal

比较两个字符串而不考虑本地区域性。返回整数值。

String.CompareTo

将当前字符串对象与另一个字符串进行比较。返回整数值。

String.StartsWith

确定一个字符串是否以传递的字符串开头。返回布尔值。

String.EndsWith

确定一个字符串是否以传递的字符串结尾。返回布尔值。

String.Equals

确定两个字符串是否相同。返回布尔值。

String.IndexOf

返回字符或字符串的索引位置,索引位置从正在检查的字符串的开头开始。返回整数值。

String.LastIndexOf

返回字符或字符串的索引位置,索引位置从正在检查的字符串的结尾开始。返回整数值。

 

连接字符串
string s1 = "orange";
string s2 = "red";
s1 += s2;


字符串对象是“不可变的”,即它们一旦创建就无法更改。对字符串进行操作的方法实际上返回的是新的字符串对象。在前面的示例中,将 s1 和 s2 的内容连接起来以构成一个字符串时,包含 "orange" 和 "red" 的两个字符串均保持不变。+= 运算符会创建一个包含组合内容的新字符串。结果是 s1 现在引用一个完全不同的字符串。只包含 "orange" 的字符串仍然存在,但连接 s1 后将不再被引用。

因此,出于性能方面的原因,大量的连接或其他涉及字符串的操作应当用 StringBuilder 类执行,如下所示:

System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("one "); sb.Append("two "); sb.Append("three"); string str = sb.ToString();


使用字符串

转义符 字符串中可以包含转义符,如“\n”(新行)和“\t”(制表符)。

如果希望包含反斜杠,则它前面必须还有另一个反斜杠 string filePath = "\\\\My Documents\\"; 实际上等同于: \\My Documents\

@ 符号 @ 符号会告知字符串构造函数忽略转义符和分行符。

ToString() 如同所有从 Object 派生的对象一样,字符串也提供了 ToString 方法,用于将值转换为字符串。此方法可用于将数值转换为字符串

访问各个字符 字符串中所包含的各个字符可以使用以下方法进行访问,如 SubString()Replace(),、Split()Trim()

更改大小写 ToUpper()ToLower()

比较 比较两个字符串的最简单方法是使用 ==!= 运算符,执行区分大小写的比较。

字符串对象也有一个 CompareTo() 方法,它根据某个字符串是否小于 (<) 或大于 (>) 另一个,返回一个整数值。比较字符串时使用 Unicode 值,小写的值小于大写的值。还可用 Compare(,),Equals()

搜索 若要在一个字符串中搜索另一个字符串,可以使用 IndexOf(),LastIndexOf()。如果未找到搜索字符串,IndexOf() 返回 -1;否则,返回它出现的第一个位置的索引(从零开始)。

任何字符 字符串可以包含包括转义序列在内的任何字符:string a = "\\\u0066\n";

拆分 将字符串拆分为子字符串(如将句子拆分为各个单词)是一个常见的编程任务。Split() 方法使用分隔符(如空格字符)char 数组,并返回一个子字符串数组。您可以使用 foreach 访问此数组

 

修改字符串内容

下面的示例使用 ToCharArray 方法来将字符串的内容提取到 char 类型的数组中。然后修改此数组中的某些元素。之后,使用 char 数组创建新的字符串实例。

 

使用 StringBuilder

设置容量和长度

StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);
另外,可以使用读/写 Capacity 属性来设置对象的最大长度。下面的示例使用 Capacity 属性来定义对象的最大长度。如:MyStringBuilder.Capacity = 25

方法名 使用

StringBuilder.Append

将信息追加到当前 StringBuilder 的结尾。

StringBuilder.AppendFormat

用带格式文本替换字符串中传递的格式说明符。

StringBuilder.Insert

将字符串或对象插入到当前 StringBuilder 对象的指定索引处。

StringBuilder.Remove

从当前 StringBuilder 对象中移除指定数量的字符。

StringBuilder.Replace

替换指定索引处的指定字符。

 

StringBuilder 类创建了一个字符串缓冲区,用于在程序执行大量字符串操作时提供更好的性能。StringBuilder 字符串还允许您重新分配个别字符,这些字符是内置字符串数据类型所不支持的。例如,此代码在不创建新字符串的情况下更改了一个字符串的内容:

 

在本示例中,StringBuilder 对象用于从一组数值类型中创建字符串:

 

使用正则表达式搜索字符串

System.Text.RegularExpressions.Regex

以下代码是用于对数组中的字符串执行简单的不区分大小写的搜索,第三个参数 RegexOptions 指示忽略大小写,

 

以下代码使用正则表达式验证数组中每个字符串的格式。验证要求每个字符串具有电话号码的形式,即用短划线将数字分成三组,前两组各包含三个数字,第三组包含四个数字。这是通过正则表达式 ^\\d{3}-\\d{3}-\\d{4}$ 完成的。

 


 

class TestRegularExpressionValidation
{
    
static void Main()
    {
        
string[] numbers = 
        {
            
"123-456-7890"
            
"444-234-22450"
            
"690-203-6578"
            
"146-893-232",
            
"146-839-2322",
            
"4007-295-1111"
            
"407-295-1111"
            
"407-2-5555"
        };

        
string sPattern = "^\\d{3}-\\d{3}-\\d{4}$";

        
foreach (string s in numbers)
        {
            System.Console.Write(
"{0,14}", s);

            
if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern))
            {
                System.Console.WriteLine(
" - valid");
            }
            
else
            {
                System.Console.WriteLine(
" - invalid");
            }
        }
    }
}

 

class TestRegularExpressions
{
    
static void Main()
    {
        
string[] sentences = 
        {
            
"cow over the moon",
            
"Betsy the Cow",
            
"cowering in the corner",
            
"no match here"
        };

        
string sPattern = "cow";

        
foreach (string s in sentences)
        {
            System.Console.Write(
"{0,24}", s);

            
if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
            {
                System.Console.WriteLine(
"  (match for '{0}' found)", sPattern);
            }
            
else
            {
                System.Console.WriteLine();
            }
        }
    }
}

 

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.StringBuilder sb = new System.Text.StringBuilder("Rat: the ideal pet");
sb[
0= 'C';
System.Console.WriteLine(sb.ToString());
System.Console.ReadLine();

 

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);
    }
}

 

char[] delimit = new char[] { ' ' }; 
string s10 = "The cat sat on the mat."
foreach (string substr in s10.Split(delimit)) 

    System.Console.WriteLine(substr); 
}

 

posted @ 2009-08-11 15:05  幽灵湖  阅读(949)  评论(0编辑  收藏  举报