1、ArrayList与数组转换
ArrayList arrListSQL = new ArrayList();
string[] sqls = (string[])arrListSQL.ToArray(typeof(string));
2、ArrayLIst 拼接成字符串,拼接后,后面没有“,”不需要再处理
ArrayList arrList = new ArrayList();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
arrList.Add(ds.Tables[0].Rows[i]["GUID"].ToString());
}
string LinkGuid = string.Join(",", arrList.ToArray());
3、在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位。
int i=10;
方法1:Console.WriteLine(i.ToString("D5"));
方法2:Console.WriteLine(i.ToString().PadLeft(5,'0'));//推荐
方法3:Console.WriteLine(i.ToString("00000"));
初见 string.Format("{0,-10}", 8)
做 .net 开发也若干年了,如此写法(下面代码中黄色高亮部分)确是我第一次见(更别提用了):
1 2 3 4 | var s1 = string.Format("{0,-10}", 8); var s2 = string.Format("{0,10}", 8); var s3 = string.Format("{0,20:yyyy-MM-dd}", DateTime.Today); var s4 = string.Format("4G 内存便宜了{0,12:C2},我打算买{1,4}条", 145, 2); |
大括号中,索引后 分号前,有一个逗号和一个整数(减号表示负数)。
会格式化成为什么样子呢?看下调试截图吧:
从上图中能大致看出此端倪,没错:
string.Format("{0,-10}", 8) 等同于 string.Format("{0}", 8).PadRight(10);
string.Format("{0,10}", 8) 等同于 string.Format("{0}", 8).PadLeft(10)。
MSDN上的说明
String.Format 方法 format 参数由零或多个文本序列与零或多个索引占位符混合组成,其中索引占位符称为格式项,对应于与此方法的参数列表中的对象。 格式设置过程将每个格式项替换为相应对象值的字符串表示形式。
格式项的语法如下:
{index[,length][:formatString]}
方括号中的元素是可选的。 下表描述每个元素。 有关复合格式设置功能(包括格式项的语法)的更多信息,请参见复合格式。
元素 | 说明 |
---|---|
索引 | 要设置格式的对象的参数列表中的位置(从零开始)。 如果由 index 指定的对象为null,则格式项将被 String.Empty 替换。 由于该重载在其参数列表中只有单个对象,index 的值必须始终为 0。 如果 index 位置没有参数,将引发FormatException。 |
,length | 参数的字符串表示形式中包含的最小字符数。 如果该值是正的,则参数右对齐;如果该值是负的,则参数左对齐。 |
:formatString | 要设置格式的对象支持的标准或自定义格式字符串。 formatString 的可能值与该对象的 ToString(format) 方法支持的值相同。 如果没有指定 formatString,并且要设置格式的对象实现了 IFormattable 接口,则将传递 null 作为用作IFormattable.ToString 格式字符串的 format 参数的值。 |
MSDN 原文链接:Format 方法 (String, Object)
优点和缺点
优点:
,length 其实把 String.PadLeft 和 String.PadRight 的功能融合在的 String.Format 方法中,简化了代码的编写。
如果没有这种格式,代码写起来麻烦多了:
1 2 3 | var s5 = string.Format("4G 内存便宜了{0},我打算买{1}条", 145.ToString("C2").PadLeft(12), 2.ToString().PadLeft(4)); |
缺点:
看起来不直观,复杂,如文首代码中的 “我打算买{1,4}条”。
实际使用少,没用过的看了很纳闷。
4、取字符串实际长度
Encoding.GetEncoding("gb2312").GetBytes(test).Length