更高效的补齐字符串的方法

方法1:

使用string.PadRight()

方法2:

自定义一个字符串补齐的静态方法:

    public static string PadRight(string src, char c, Int32 totalLength)
        {
            if (totalLength < src.Length)
                return src;
            return src + new String(c, totalLength - src.Length);
        }

 

使用第二种方法效率更高。

测试结果代码如下:

using System;
using System.Collections.Generic;
using System.Diagnostics;
public class MyClass
{
	public static void RunSnippet()
	{
       Stopwatch s1=new Stopwatch();
	  
		string s="1",s2="";
		int recurring=1000000;
		int recurringChar=20;


		s1.Start();
	   for(int i=1;i<recurring;i++){
		  s2=PadRight(s,'0',recurringChar);
	   }
	   s1.Stop();	   
	   WL("静态方法:PadRight耗时:{0}",s1.ElapsedMilliseconds.ToString());
	   s1.Reset();
	       s="";
	   s2="";
		   s1.Start();
	   for(int i=1;i<recurring;i++){
		  s2=s.PadRight(recurringChar,'0');
	   }
		   s1.Stop();
	WL("string.PadRight()耗时:{0}",s1.ElapsedMilliseconds.ToString());
	  s1.Reset();
	
	   
	}
	
	public static string PadRight(string src, char c, Int32 totalLength)
        {
            if (totalLength < src.Length)
                return src;
            return src + new String(c, totalLength - src.Length);
            
        }
	#region Helper methods
	
	public static void Main()
	{
		try
		{
			RunSnippet();
		}
		catch (Exception e)
		{
			string error = string.Format("---\nThe following error occurred while executing the snippet:\n{0}\n---", e.ToString());
			Console.WriteLine(error);
		}
		finally
		{
			Console.Write("Press any key to continue...");
			Console.ReadKey();
		}
	}

	private static void WL(object text, params object[] args)
	{
		Console.WriteLine(text.ToString(), args);	
	}

	#endregion
}

posted on 2010-01-24 17:21  lugreen  阅读(1494)  评论(0编辑  收藏  举报

导航