在 C# 中,將字符串轉換為字符串數組的方法有多種,具體取決於分割規則(如按分隔符、固定長度、單個字符等)。以下是幾種常見場景及實現示例:
1. 按指定分隔符分割(最常用:Split 方法)
String.Split 是最基礎的分割方法,支持單個/多個分隔符、移除空項等配置。
示例 1:按單個分隔符分割
string str = "apple,banana,orange";
string[] result = str.Split(','); // 按逗號分割
// 結果:["apple", "banana", "orange"]
示例 2:按多個分隔符分割
string str = "apple,banana;orange|grape";
char[] separators = { ',', ';', '|' }; // 多個分隔符
string[] result = str.Split(separators);
// 結果:["apple", "banana", "orange", "grape"]
示例 3:移除空項(避免分隔符連續導致的空字符串)
當字符串中存在連續分隔符(如 ",,,")或首尾有分隔符時,默認會生成空字符串。可通過 StringSplitOptions.RemoveEmptyEntries 移除:
string str = ",apple,,banana,";
string[] result1 = str.Split(','); // 保留空項
// 結果:["", "apple", "", "banana", ""]
string[] result2 = str.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); // 移除空項
// 結果:["apple", "banana"]
示例 4:按字符串分隔符分割(而非字符)
若分隔符是字符串(如 "||"),需使用 string[] 類型的分隔符參數:
string str = "apple||banana||orange";
string[] separators = { "||" };
string[] result = str.Split(separators, StringSplitOptions.None);
// 結果:["apple", "banana", "orange"]
2. 按固定長度分割
例如,將 "123456789" 按每 3 個字符分割為 ["123", "456", "789"]。
實現方式 1:循環截取
string str = "123456789";
int length = 3;
List<string> resultList = new List<string>();
for (int i = 0; i < str.Length; i += length)
{
// 處理最後一段可能不足長度的情況
int subLength = Math.Min(length, str.Length - i);
resultList.Add(str.Substring(i, subLength));
}
string[] result = resultList.ToArray();
// 結果:["123", "456", "789"]
實現方式 2:LINQ 簡化
string str = "123456789";
int length = 3;
string[] result = Enumerable.Range(0, (str.Length + length - 1) / length)
.Select(i => str.Substring(i * length, Math.Min(length, str.Length - i * length)))
.ToArray();
// 結果同上
3. 轉換為單個字符的字符串數組
將字符串的每個字符轉為獨立的字符串元素(如 "abc" → ["a", "b", "c"])。
實現方式 1:ToCharArray + Select
string str = "abc";
string[] result = str.ToCharArray() // 先轉 char[]
.Select(c => c.ToString()) // 每個 char 轉 string
.ToArray();
// 結果:["a", "b", "c"]
實現方式 2:直接遍歷字符串
string str = "abc";
string[] result = new string[str.Length];
for (int i = 0; i < str.Length; i++)
{
result[i] = str[i].ToString();
}
// 結果同上
4. 使用正則表達式分割(複雜規則)
對於更復雜的分割規則(如按連續空白字符、數字與字母分界等),可使用 Regex.Split。
示例:按連續空白字符分割
using System.Text.RegularExpressions;
string str = "apple banana\torange\ngrape"; // 包含空格、製表符、換行符
string[] result = Regex.Split(str, @"\s+"); // \s+ 匹配1個或多個空白字符
// 結果:["apple", "banana", "orange", "grape"]
5. 其他特殊場景
- 按換行符分割:
str.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None)(兼容 Windows/Linux 換行)。 - 按單詞分割:使用正則
Regex.Split(str, @"\W+")(\W匹配非單詞字符,需注意邊界)。
注意事項
- 空值處理:若原始字符串為
null,調用Split會拋出ArgumentNullException,需提前判斷。 - 空字符串處理:
""分割後結果為[""](單個空字符串)。 - 分隔符類型:
Split方法的分隔符參數支持char[]或string[],需根據實際情況選擇。
根據你的具體需求,選擇上述方法即可實現字符串到字符串數組的轉換。