错误:
namespace Test
{
class Program
{
static void Main(string[] args)
{
//定义一个2行3列的二维数组
//此处发生错误,使用int[][]定义二维数组时,不能指定列数
//可以修改为int[,] arr=new int[2,3];或者int[][] arr=new int[2][];
int[][] arr=new int[2][3];
arr[0][0]=0;
arr[0][1]=1;
arr[0][2]=2;
arr[1][0]=3;
arr[1][1]=4;
arr[1][2]=5;
}
}
}
decimal类型:表示128位数据类型,适合于财务和货币计算。
decimal d = 3.14m
console.WriteLine("C:\\Windows\\Microsoft.Net\\Framework") 很多个\\
console.WriteLine(@"C:\Windows\Microsoft.Net\Framework") 不需要转译
静态变量可在其他类中使用
class Test{ int x=45; static int y = 90; } | class Test2{ int z = Test.y; } |
const与readonly
在java中声明静态常量方式为public static final;在C#中仅需一个const关键字。
错误:
class Programe{ readonly int Price; Programe(){ Price = 368; } static void Main(string[] args){ Programe p = new Programe(); p.Price = 365; //此处出错,只能在构造函数中修改 } } |
低精度类型自增
错误: byte a=1; a = a+1; | 正确: byte a=1; a += 1; |
字符串
一、提取字符串信息
0.Length
1.IndexOf
2.LastIndexOf
3.StartsWith
public bool StartsWith(string value)
public bool StartsWith(string value,bool ignoreCase,CultureInfo culture)
- value:要比较的字符串
- ignoreCase:是否忽略大小写
- culture:如何与value进行比较的区域性信息,一般为null
4.EndsWith
参数同StartsWith
二、字符串操作
1.字符串拼接:
“+”拼接
2.比较字符串:
a)"=="
b)Equals
public bool Equals(string value)
public static bool Equals (string a,string b)
3.字符串大小写转换:
ToUpper;ToLower
4.格式化字符串:P142
Format
public static string Format(string format,Object arg0)
public static string Format(string format,params Object[] args)
解释:
class Program { static void Main(string[] args) { // 输出金额 Console.WriteLine(string.Format("1251+3950的结果是(以货币形式显示):{0:C}", 1251 + 3950)); // 输出科学计数法 Console.WriteLine(string.Format("120000.1用科学计数法表示:{0:E}", 120000.1)); // 输出以分隔符显示的数字 Console.WriteLine(string.Format("12800以分隔符数字显示的结果是:{0:N0}", 12800)); // 输出小数点后两位 Console.WriteLine(string.Format("π取两位小数点:{0:F2}", Math.PI)); // 输出16进制 Console.WriteLine(string.Format("33的16进制结果是:{0:X4}", 33)); // 输出百分号数字 Console.WriteLine(string.Format("天才是由 {0:P0} 的灵感,加上 {1:P0} 的汗水 。", 0.01, 0.99)); Console.ReadLine(); } } |
{0:N0}显示数字不包括小数 {0:F2}表示保留两位小数 {0:X4}表示显示4位数形式的十六进制数
{0:P0}表示显示的百分比中不包括小数
static void Main(string[] args) { DateTime strDate = DateTime.Now;//获取当前日期时间 // 输出短日期格式 Console.WriteLine(string.Format("当前日期的短日期格式表示:{0:d}", strDate)); // 输出长日期格式 Console.WriteLine(string.Format("当前日期的长日期格式表示:{0:D}", strDate)); Console.WriteLine();//换行 // 输出完整日期/时间格式(短时间) Console.WriteLine(string.Format("当前日期时间的完整日期/时间格式(短时间)表示:{0:f}", strDate)); // 输出完整日期/时间格式(长时间) Console.WriteLine(string.Format("当前日期时间的完整日期/时间格式(长时间)表示:{0:F}", strDate)); Console.WriteLine();//换行 // 输出常规日期/时间格式(短时间) Console.WriteLine(string.Format("当前日期时间的常规日期/时间格式(短时间)表示:{0:g}", strDate)); // 输出常规日期/时间格式(长时间) Console.WriteLine(string.Format("当前日期时间的常规日期/时间格式(长时间)表示:{0:G}", strDate)); Console.WriteLine();//换行 // 输出时间格式 Console.WriteLine(string.Format("当前时间的短时间格式表示:{0:t}", strDate)); // 输出长时间格式 Console.WriteLine(string.Format("当前时间的长时间格式表示:{0:T}", strDate)); Console.WriteLine();//换行 // 输出月/日格式 Console.WriteLine(string.Format("当前日期的月/日格式表示:{0:M}", strDate)); // 输出年/月格式 Console.WriteLine(string.Format("当前日期的年/月格式表示:{0:Y}", strDate)); Console.ReadLine(); } |
5.截取字符串
Substring(int startIndex)
Substring(int startIndex,int length)
static void Main(string[] args) { string strFile = "Program.cs"; //定义字符串 Console.WriteLine("文件完整名称:" + strFile); //输出文件完整名称 string strFileName = strFile.Substring(0, strFile.IndexOf('.')); //获取文件名 string strExtension = strFile.Substring(strFile.IndexOf('.')); //获取扩展名 Console.WriteLine("文件名:" + strFileName); //输出文件名 Console.WriteLine("扩展名:" + strExtension); //输出扩展名 Console.ReadLine(); } |
6.分割字符串
Split
名称 | 说明 |
String.Split (Char[]) | 返回包含此实例中的子字符串 (由指定 Char 数组的元素分隔)的 String 数组。 由 .NET Compact Framework 支持。 |
String.Split (Char[], Int32) | 返回包含此实例中的子字符串 (由指定 Char 数组的元素分隔)的 String 数组。 参数指定返回的子字符串的最大数量。 |
String.Split (Char[], StringSplitOptions) | 返回包含此字符串中的子字符串 (由指定的 Char 数组的元素分隔)的 String 数组。 参数指定是否返回空数组元素。 |
String.Split (String[], StringSplitOptions) | 返回包含此字符串中的子字符串 (由指定的 String 数组的元素分隔)的 String 数组。 参数指定是否返回空数组元素。 |
String.Split (Char[], Int32, StringSplitOptions) | 返回包含此字符串中的子字符串 (由指定的 Char 数组的元素分隔)的 String 数组。 参数指定要返回子字符串的最大数量,以及是否要返回空数组元素。 |
String.Split (String[], Int32, StringSplitOptions) | 返回包含此字符串中的子字符串 (由指定的 String 数组的元素分隔)的 String 数组。 参数指定要返回子字符串的最大数量,以及是否要返回空数组元素。 |
static void Main(string[] args) { //声明字符串 string str = "让编程学习不再难,让编程创造财富不再难,让编程改变工作和人生不再难"; char[] separator = { ',' };//声明分割字符的数组 //分割字符串 string[] splitStrings = str.Split(separator, StringSplitOptions.RemoveEmptyEntries); //使用for循环遍历数组,并输出 for (int i = 0; i < splitStrings.Length; i++) { Console.WriteLine(splitStrings[i]); } Console.ReadLine(); } |
7.去除空字符串
trim
8.替换字符串
Replace
public string Replace(char Ochar,char Nchar) //替换字符
public string Replace(string Ovalue,string Nvalue) //替换字符串
三、可变字符串类
使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的string对象,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将会极大增加系统开销。
StringBuilder
StringBuilder类位于System.Text命名空间中,如果要创建StringBuilder对象,首先必须引用该命,
名空间。 StringBuilder类有6种不同的构造方法,分别如下:
public StringBuilder() public StringBuilder(int capacity) public StringBuilder(string value) public StringBuilder(int capacity,int maxCapacity) public StringBuilder(string value,int capacity) public stringBuilder(string value, int startIndex, int length,int capacity) |
◆ capacity : StringBuilder对象的建议起始大小。
◆ value :字符串,包含用于初始化StringBuilder对象的子字符串。
◆ maxCapacity :当前字符串可包含的最大字符数。
◆ startIndex : value中子字符串开始的位置.
◆length:子字符串中的字符数。
创建一个StringBuilder对象,其初始引用的字符串为"Hello World!",代码如下:
StringBuilder MyStringBuilder = new StringBuilder("Hello world!"); |
说明: StringBuilder类表示值为可变字符序列的类似字符串的对象,之所以说值是可变的,是因为在通过追加、移除,替换或插入字符而创建它后可以对它进行修改.
Append | 将文本或字符串追加到指定对象的末尾 |
AppendFormat | 自定义变量的格式并将这些值 追加到StringBuilder对象的末尾 |
Insert | 将字符串或对象添加到当前StringBuilder对象中的 指定位置 |
Remove | 从当前StringBuilder对象中移除指定数量的字符 |
Replace | 用另一个指定的字符来替换StringBuilder对象 内的字符 |
实例:
static void Main(string[] args) { int Num = 368; //声明一个int类型变量Num并初始化为368 //实例化一个StringBuilder类,并初始化为“明日科技” StringBuilder SBuilder = new StringBuilder("明日科技"); SBuilder.Append("》C#编程词典"); //使用Append方法将字符串追加到SBuilder的末尾 Console.WriteLine(SBuilder); //输出SBuilder //使用AppendFormat方法将字符串按照指定的格式追加到SBuilder的末尾 SBuilder.AppendFormat("{0:C0}", Num); Console.WriteLine(SBuilder); //输出SBuilder SBuilder.Insert(0, "软件:"); //使用Insert方法将“软件:”追加到SBuilder的开头 Console.WriteLine(SBuilder); //输出SBuilder //使用Remove方法从SBuilder中删除索引14以后的字符串 SBuilder.Remove(14, SBuilder.Length - 14); Console.WriteLine(SBuilder); //输出SBuilder //使用Replace方法将“软件:”替换成“软件工程师必备” SBuilder.Replace("软件", "软件工程师必备"); Console.WriteLine(SBuilder); //输出SBuilder Console.ReadLine(); } |
当程序中需要大量的对某个字符串进行操作时,应该考虑应用StringBuilder类处理该字!目的就是针对大量string操作的一种改进办法,避免产生太多的临时对象;而当程序中串进行一次或几次操作时,采用string类即可.