小技巧汇总

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);

大括号中,索引后 分号前,有一个逗号和一个整数(减号表示负数)。

会格式化成为什么样子呢?看下调试截图吧:

image

从上图中能大致看出此端倪,没错:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值