code:
public string RunningHistoryValue(DataRow temp) { if (temp == null) return null; string[] strValue = { temp["BANK_NAME"].ToString(), temp["bank_provice"].ToString(), temp["CUSTOMER_NAME"].ToString() }; var orderByArr = strValue.OrderBy(x => x.Length).ToArray();//字符串排序 var maxLeng = Encoding.Default.GetBytes(orderByArr[orderByArr.Length - 1].ToCharArray()).Length;//最大值长度 取字节 var sb = new StringBuilder(); sb.AppendFormat("开户行:{0}", CompareString(strValue[0], maxLeng)); sb.AppendFormat("支户名:{0}", temp["BANK_SUBNAME"]); sb.Append(Environment.NewLine); sb.AppendFormat("归属省:{0}", CompareString(strValue[1], maxLeng)); sb.AppendFormat("归属市:{0}", temp["bank_city"]); sb.Append(Environment.NewLine); sb.AppendFormat("用 户:{0}", CompareString(strValue[2], maxLeng)); sb.AppendFormat("账 号:{0}", temp["BANK_ACCOUNT"]); return sb.ToString(); } /// <summary> /// 字符串比较大小 不够位数右边补充空格 /// </summary> /// <param name="value"></param> /// <param name="length"></param> /// <returns></returns> public string CompareString(string value,int length) { if ((value + "").Length == 0) return null; if (Encoding.Default.GetBytes(value.ToCharArray()).Length >= length) return value; string tempValue = value.PadRight(length, ' '); return tempValue; }
问题出现在 CompareString
string tempValue = value.PadRight(length, ' '); 这个补齐length 比较的其实是字节数 这个是直接length
后面想了下改成这样 ok了
/// <summary> /// 字符串比较大小 不够位数右边补充空格 /// </summary> /// <param name="value"></param> /// <param name="length"></param> /// <returns></returns> public string CompareString(string value,int length) { if ((value + "").Length == 0) return null; var byteLength = Encoding.Default.GetBytes(value.ToCharArray()).Length; if (byteLength >= length) return value; var qsLength = length - byteLength; string tempValue = value; string kong = ""; for (int i = 0; i < qsLength; i++) { kong = kong + " "; } return tempValue+kong; }
结果达到了 不知道有其他的好一点的写法没?
啊..你为什么要按字节来补齐...你这写法要是编码方式变了了.再不济你把编码方式改成unico不就是一样的效果了.
字符串有 PadLeft 和 PadRight 可以自动补充功能。
你查查~~~
上面已经有写string tempValue = value.PadRight(length, ' '); 这个是有问题的 不是按字节的长度 来补齐了 。也看仔细点 啊 园友
最后那个方法 已经解决 了