前言
字符串连接是 .NET 中常见的操作,而将多个字符串连成一个具有指定分隔符的字符串也是一项常见的任务。C# 有种主要的方法来实现,分别是循环手动连接字符串和String内置的Join方法。本文将比较这两种方法,并展示两者的区别,通过对比我们可以了解使用 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 循环来手动连接字符串,此方法通过访问集合并将分隔符与每个元素添加到结果字符串中。
示例:数组集合
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 简洁明了; 循环需要更多代码与逻辑;2、效率:Join 针对性能进行优化,最大限度地减少分配; 循环由于字符串不可变,效率可能较低;3、可维护性:Join 标准方法,更易于理解; 循环代码与逻辑较多,更难维护;4、功能性:Join 提供额外的过载和选项; 循环边缘情况需要额外的逻辑 ;5、用法:Join 非常适合联接数组或集合; 循环适合自定义格式需求;小结
本文使用的二种使用分隔符连接字符串的方法中,即使这两种方法获得的结果相同。String.Join 方法提供了更好的功能、可读性、性能和可维护性。在处理分隔符拼接字符串集合时,应为首选。
该文章在 2024/11/1 9:04:36 编辑过