在 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 匹配非單詞字符,需注意邊界)。

注意事項

  1. 空值處理:若原始字符串為 null,調用 Split 會拋出 ArgumentNullException,需提前判斷。
  2. 空字符串處理"" 分割後結果為 [""](單個空字符串)。
  3. 分隔符類型Split 方法的分隔符參數支持 char[]string[],需根據實際情況選擇。

根據你的具體需求,選擇上述方法即可實現字符串到字符串數組的轉換。