1.把string类型转换为int类型有三种方法:
Convert.ToInt32(myString), Int32.Parse(myString);Int32.TryParse(myString, out myint);
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
... ... {
class Program
......{
static void Main(string[] args)
......{
string myString = "1234";
int myint = 0;
myint = Convert.ToInt32(myString);
Console.Write(myint+" ");
myint = Int32.Parse(myString);
Console.Write(myint+" ");
Int32.TryParse(myString, out myint);
Console.Write(myint+" ");
}
}
}
//string myString = "1234";
string myString = null;
int myint = 0;
myint = Convert.ToInt32(myString);
Console.Write(myint+"/r/n");
myint = Int32.Parse(myString);
Console.Write(myint+"/r/n");
Int32.TryParse(myString, out myint);
Console.Write(myint+"/r/n");
这次字符串是null,那么运行结果会怎样呢?Convert.ToInt32()在null时不抛异常而是返回0;
Int32.Parse()要抛异常;
Int32.TryParse()不抛异常,会返回true或false来说明解析是否成功,如果解析错误,调用方将会得到0值。
3个方法几乎没有差异!
如果真要追求完美那么性能的差异是:Int32.TryParse()优于Int32.Parse()优于Convert.ToInt32()。
所以个人建议:.NET1.1下用Int32.Parse();.NET2.0用Int32.TryParse()。
那么为什么会这样呢?
其实这些数据不是偶然的,因为:
Convert.ToInt32 会把最终的解析工作代理给 Int32.Parse;
Int32.Parse 会把最终的解析工作代理给Number.ParseInt32;
Int32.TryParse 会把最终的解析工作代理给Number.TryParseInt32。
2.@"abc"和"abc"区别在那里
@"abc"和"abc"没有什么区别
不过@是忽略转义字符的!
比如 "abc/n" 输出 abc 并加个换行
但是 @"abc/n" 输出 abc/n 无换行!
取消转义
比如你想将 C:/windows/system 这个字符串赋值给 str
一般情况下要:
string str = "C://windows//system";
因为在C#中,// 才会被转义成一个 /
又例如/n就是换行符
而加入@,就可以这样:
string str = @"C:/windows/system";
3.把123456789转换为12-345-6789的3种方法
方法一:
a = int .Parse(a).ToString( " ##-###-#### " );
Console.Write(a);
方法二:
a = a.Insert( 5 , " - " ).Insert( 2 , " - " );
Console.Write(a);
方法三:
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
... {
class Program
...{
static void Main()
...{
string a = "123456789";
Regex reg = new Regex(@"^(d{2})(d{3})(d{4})$");
a = reg.Replace(a, "$1-$2-$3");
Console.Write(a);
}
}
}
4.输出21个AAAAAAAAAAAAAAAAAAAAA的巧妙做法
new构造器的理解
如果要你创建一个由21个"A"字符构成的字符串,你会怎么做?
string str = "AAAAAAAAAAAAAAAAAAAAA";//老实型
string str = new string('A', 21);//简单聪明
5. 判断空字符串的三种方法的比较:
string a="";
1.if(a=="")
2.if(a==String.Empty)
3.if(a.Length==0)
其中就其执行速度来说又快到慢是:3,2,1.
1.if(a=="") // ""需要实例化一个String对象,最差
2.if(a==String.Empty) // String.Empty是常量,不需要实例化
3.if(a.Length==0) // a.Length虽然最快,但是语意不如第2种清晰
另,String.IsNullOrEmpty(value)判断的是该字符串是非为空,或者为空字符串.
结论:推荐使用2.if(a==String.Empty),安全,稳定,语意清晰