Home [C# 筆記] 字串(String)常用方法
Post
Cancel

[C# 筆記] 字串(String)常用方法

方法說明
Contains().Contains(要找的字)
 傳回 bool 值,這個值表示指定的子字串是否會出現在這個字串內。
IndexOf()指定字串或字元,有找到,返回第一個索引位置,沒找到返回 -1。
 建議改 Contains 用 來改善可讀性。
string.Join()將陣列按照指定的字元串接,返回一個字串
Replace().Replace(要換的字, 替換的字) 替換
Split()分割字串
Substring()s.Substring(3,1); 從第index為3開始截取字串,只取1個字元
ToLower()英文字母轉小寫
ToUpper()英文字母轉大寫
Trim()去除字串中的前後「空白字元」

MSDN - CA2249:請考慮使用 String.Contains 而非 String.IndexOf。此規則會找出用來檢查子字串是否存在的呼叫 IndexOf ,並建議改 Contains 用 來改善可讀性。

1、String.Contains

.Contains(要找的字)

返回一个值,该值指示指定的字符是否出现在此字符串中。
(傳回 bool 值,這個值表示指定的子字串是否會出現在這個字串內。)

1
2
3
string s1 = "The quick brown fox jumps over the lazy dog";
string s2 = "fox";
Console.WriteLine(s1.Contains(s2)); //true

2、String.IndexOf

指定 Unicode 字符或字符串在此实例中的第一个匹配项的从零开始的索引。 如果未在此实例中找到该字符或字符串,则此方法返回 -1

.IndexOf(要找的字):要找的字,是在第一次出現的位置
如果找不到,會回傳 -1

1
2
3
4
5
string s = "abc123efg456";
Console.WriteLine(s.IndexOf('e')); //6,有找到,返回索引位置
Console.WriteLine(s.IndexOf('x')); //-1,沒找到,返回-1
Console.WriteLine(s.IndexOf("456")); //9,有找到,返回第一個索引位置
Console.WriteLine(s.IndexOf("789")); //-1

MSDN - CA2249:請考慮使用 String.Contains 而非 String.IndexOf

3、String.Join

將陣列按照指定的字元串接,返回一個字串

1
2
3
string[] s = ["aa","bb", "cc"];
string newS = string.Join(',',s);
Console.WriteLine(newS); //aa,bb,cc

也可以這樣寫:

1
2
string s = string.Join('-',"123","456","789");
Console.WriteLine(s); //123-456-789

因為它是params參數

4、String.Replace

.Replace(要換的字, 替換的字) 替換

返回一个新字符串,其中已将当前字符串中的指定 Unicode 字符或 String 的所有匹配项替换为其他指定的 Unicode 字符或 String。

1
2
3
string s = "abcd efa abc";
Console.WriteLine(s.Replace('a','A')); //Abcd efA Abc
Console.WriteLine(s.Replace("abc","XX")); //XXd efa XX

舉一反三:Contains() + Replace()

1
2
3
4
5
string s = "小六在哪裡?";
if(s.Contains("小六")) {
    s = s.Replace("小六","張三");
}
Console.WriteLine(s); //張三在哪裡?

5、String.Split

分割字串。

返回的字符串数组包含此实例中的子字符串(由指定字符串或 Unicode 字符数组的元素分隔)。

1
2
string s = "aa,bb,cc,dd";
string[] ss = s.Split(','); //[aa,bb,cc,dd]

舉一反三:Split() + string.Join()

將重複的符號拿掉 a--b -c--23 --xx-yz 改成 a-b-c-23-xx-yz

1
2
3
4
5
6
7
8
9
string s = "a--b -c--23 --xx-yz";

//split()把所有的橫線全都拿掉,RemoveEmptyEntries把結果空的元素移除掉
string[] ss = s.Split(new char[] { '-', ' ' },StringSplitOptions.RemoveEmptyEntries);

//再用 join把他們連起來
s = string.Join('-', ss);

Console.WriteLine(s); //a-b-c-23-xx-yz

6、String.Substring

该方法用于截取字符串,有两个重载:

  • Substring(Int32) 从此实例检索子字符串。 子字符串在指定的字符位置开始并一直到该字符串的末尾。
  • Substring(Int32, Int32) 从此实例检索子字符串。 子字符串从指定的字符位置开始且具有指定的长度。

例如:s.Substring(3,1); 從第index為3開始截取字串,只取1個字元

範例

1
2
3
string s = "abcdefg";
Console.WriteLine(s.Substring(1)); //bcdefg
Console.WriteLine(s.Substring(2,3)); //cde

7、String.ToLower

返回此字符串转换为小写形式

1
2
string s = "abCdEFg";
Console.WriteLine(s.ToLower()); //abcdefg

8、String.ToUpper

返回此字符串转换为大写形式

1
2
string s = "abCdEFg";
Console.WriteLine(s.ToUpper()); //ABCDEFG

9、String.Trim

返回一个新字符串,删除了字符串前後的空白符。
(去除字串中的前後「空白字元」)

1
2
string s = "   abCdEFg  ";
Console.WriteLine(s.Trim()); 

MSDN - CA2249:請考慮使用 String.Contains 而非 String.IndexOf
[C# 筆記] string 字串提供的各種方法 1 by R
[C# 筆記] string 字串提供的各種方法 2 by R
C# String 类在开发中常用到的方法汇总【详细版】
.split() + string.Join() by R [C# 筆記] 特殊字元處理:反斜線/、@符號
[C# 筆記] 字元(Char)常用方法
Book: Visual C# 2005 建構資訊系統實戰經典教本

This post is licensed under CC BY 4.0 by the author.