String擴展 讓你在PadLeft和PadRight時不再受單雙字節問題困擾
阿新 • • 發佈:2018-03-20
his 字節 ati span ews pan spa summary padleft
/// <summary> /// 按單字節字符串向左填充長度 /// </summary> /// <param name="input"></param> /// <param name="length"></param> /// <param name="paddingChar"></param> /// <returns></returns> public staticstring PadLeft2(this string input, int length, char paddingChar = ‘\0‘) { return Pad(input, length, paddingChar, true); } /// <summary> /// 按單字節字符串向右填充長度 /// </summary> /// <param name="input">輸入字符串</param> ///<param name="length">單字節長度</param> /// <param name="paddingChar">補位字符</param> /// <returns></returns> public static string PadRight2(this string input, int length, char paddingChar = ‘\0‘) { return Pad( input, length, paddingChar, false); } private static string Pad(string input, int length, char paddingChar,bool isLeft) { var isDoubleChar = Regex.IsMatch(paddingChar.ToString(), @"[^\x00-\xff]"); var singleLength = Regex.Replace(input, @"[^\x00-\xff]", "aa").Length; var num = (length - singleLength) *1.0/(isDoubleChar?2:1); var newStr=new string(paddingChar,(int)num); if (isLeft) { input = newStr + input; } else { input = input + newStr; } return input; }
String擴展 讓你在PadLeft和PadRight時不再受單雙字節問題困擾