前言
字符串連接是 .NET 中常見的操作,而將多個字符串連成一個具有指定分隔符的字符串也是一項常見的任務。C# 有種主要的方法來實現,分別是循環(huán)手動連接字符串和String內置的Join方法。本文將比較這兩種方法,并展示兩者的區(qū)別,通過對比我們可以了解使用 String.Join 在兩者中是其更好的選擇。兩種方法
1、String.Join
在.NET 的 System 命名空間下,String 類中的 Join 方法,此方法可用于連接具有指定分隔符的字符串數組或集合。
using System;
namespace Fountain.WinConsole.JoinDemo
{
? ?class Program
? ?{
? ? ? ?static void Main(string[] args)
? ? ? ?{
? ? ? ? ? ?string[] expressArray = { "ZTO", "YUNDA", "STO","JT","JD","SF" };
? ? ? ? ? ?string result = String.Join(",", expressArray);
? ? ? ? ? ?// 輸出 ZTO,YUNDA,STO,JT,JD,SF
? ? ? ? ? ?Console.WriteLine(result);
? ? ? ? ? ?Console.ReadKey();
? ? ? ?}
? ?}
}
從.NET 4.5 后Join 還支持 IEnumerator<T>using System;
using System.Collections.Generic;
namespace Fountain.WinConsole.JoinDemo
{
? ?internal class Program
? ?{
? ? ? ?static void Main(string[] args)
? ? ? ?{
? ? ? ? ? ?List<string> expressList = new List<string>();
? ? ? ? ? ?expressList.Add("ZTO");
? ? ? ? ? ?expressList.Add("YTO");
? ? ? ? ? ?expressList.Add("JT");
? ? ? ? ? ?expressList.Add("SF");
? ? ? ? ? ?expressList.Add("JD");
? ? ? ? ? ?// Join 以,分隔符連接字符串
? ? ? ? ? ?string result = string.Join(",", expressList);
? ? ? ? ? ?// 輸出 ZTO,YTO,JT,SF,JD
? ? ? ? ? ?Console.WriteLine(result);
? ? ? ? ? ?Console.ReadKey();
? ? ? ?}
? ?}
}
使用 for 或者 foreach 循環(huán)來手動連接字符串,此方法通過訪問集合并將分隔符與每個元素添加到結果字符串中。
示例:數組集合
namespace Fountain.WinConsole.LoopsDemo
{
? ?class Program
? ?{
? ? ? ?static void Main(string[] args)
? ? ? ?{
? ? ? ? ? ?string[] expressArray = { "ZTO", "YUNDA", "STO","JT","JD","SF" };
? ? ? ? ? ?string result = string.Empty;
? ? ? ? ? ?for (int j = 0; j < expressArray.Length; j++)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?result += expressArray[i];
? ? ? ? ? ? ? ?if (j < expressArray.Length - 1)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?result += ",";
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? ?// 輸出 ZTO,YUNDA,STO,JT,JD,SF
? ? ? ? ? ?Console.WriteLine(result);
? ? ? ? ? ?Console.ReadKey();
? ? ? ?}
? ?}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Fountain.WinConsole.LoopsDemo
{
? ?internal class Program
? ?{
? ? ? ?static void Main(string[] args)
? ? ? ?{
? ? ? ? ? ?List<string> expressList = new List<string>();
? ? ? ? ? ?expressList.Add("ZTO");
? ? ? ? ? ?expressList.Add("YTO");
? ? ? ? ? ?expressList.Add("JT");
? ? ? ? ? ?expressList.Add("SF");
? ? ? ? ? ?expressList.Add("JD");
? ? ? ? ? ?StringBuilder result = new StringBuilder();
? ? ? ? ? ?for (int i = 0; i < expressList.Count; i++)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?result.Append(expressList[i]);
? ? ? ? ? ? ? ?if (i < expressList.Count - 1)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?result.Append(",");
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? ?// 輸出 ZTO,YUNDA,STO,JT,JD,SF
? ? ? ? ? ?Console.WriteLine(result);
? ? ? ? ? ?Console.ReadKey();
? ? ? ?}
? ?}
}
方法比較
1、 代碼可讀性:Join 簡潔明了; 循環(huán)需要更多代碼與邏輯;2、效率:Join 針對性能進行優(yōu)化,最大限度地減少分配; 循環(huán)由于字符串不可變,效率可能較低;3、可維護性:Join 標準方法,更易于理解; 循環(huán)代碼與邏輯較多,更難維護;4、功能性:Join 提供額外的過載和選項; 循環(huán)邊緣情況需要額外的邏輯 ;5、用法:Join 非常適合聯接數組或集合; 循環(huán)適合自定義格式需求;小結
本文使用的二種使用分隔符連接字符串的方法中,即使這兩種方法獲得的結果相同。String.Join 方法提供了更好的功能、可讀性、性能和可維護性。在處理分隔符拼接字符串集合時,應為首選。
該文章在 2024/11/1 9:04:36 編輯過