一、字符串索引位置和长度获取
static void Test2()
{
string data = "012345678&abcde";
int dataLocation=data.IndexOf("&");
Console.WriteLine(dataLocation);//结果是9,因为索引从0开始,到&前的位置。&不算
int dataLocation1 = data.IndexOf("&abc");
Console.WriteLine(dataLocation1);//结果是也是9,也就是说可以单独查一个字符,也可以几个组合。也是取最前面的
int dataLocation2=data.IndexOf("qq");//这个值是负1,就是没有搜索到
Console.WriteLine(dataLocation2);
Console.WriteLine("------------");
Console.WriteLine(data.Length);//截取字符串的长度,如果加空格,空格也占1格的
}
二、字符串区间的截取
static void Test3()
{
string data = "012345678&abcde";
string dataRange = data.Substring(0,9);
Console.WriteLine(dataRange);//结果是012345678
string dataRange1 = data.Substring(0, data.IndexOf("&"));
Console.WriteLine(dataRange1);///结果是也是012345678 ,也就是说后面不一定是数字,也可以是截取字符串的位置
string dataRange2 = data.Substring(data.IndexOf("&")+1);
Console.WriteLine(dataRange2);///结果是8&abcde 也就是说从 & 这个字符后面所有的内容
}
//后期代码越来越复杂,可能不能在一个主程序内写,要分出好几个子程序。
//哪里不明白的地方
//可以Add_VChatId:"jingjianwang888888"
三、字符串相等的判断
字符串比较和值类型
static void Test4()
{
string data1 = "ABCD";
string data2 = "ABCD";
string data3 = "abcd";
string data4 = "DCBA";
//比较运算符
Console.WriteLine(data1==data2);//输出为Ture
Console.WriteLine(data1==data3);//输出为False
//比较字符忽略大小写,需要同时转成成大写或者小写
Console.WriteLine(data1.ToUpper()==data3.ToUpper());//这个就是Ture
Console.WriteLine(data1.Equals(data2) );//用Equals比较方法也可以
//==或者Equals方法默认只能比较“值类型”或者“字符串“类型
}
五、分割方法Split()方法
分割字符串,返回字符串方法
static void Test1()
{
string data = "AB CD EF HJ";//使用空字符分隔的字符串
string[] dataArray = data.Split();//使用空格字符分隔不需要参数
string data1 = "AB,CD,EF,HJ";
string[] dataArray1 = data1.Split(',');//这个就要写参数了,不写的话不会报错,但是找不到空格这个字符,所以会把源代码直接输出
foreach (var item in dataArray)
{
Console.WriteLine(item);
}
Console.WriteLine("------------");
foreach (var item in dataArray1)
{
Console.WriteLine(item);
}
}
六、组合string.Join()方法:
组合字符串
static void Test5()
{
string[] data = { "AB", "CD", "EF" };
string dataArray=string.Join("_", data);//这个地方用啥连接的就就是啥
Console.WriteLine( dataArray);//结果AB_CD_EF
}
七、替换Replace
static void Test6()
{
string data = "AB,CD,EF";
string data1 = data.Replace(",","_");//把","替换”_“
Console.WriteLine(data1);//结果AB_CD_EF
}
八、字符串 格式化扩展
数学格式化为字符串时,格式代码通常是象‘X0’这样的格式。X是格式化标识符,0是精度标识符。格式标识符号共有9种,它们代表了大多数常用的数字格式。
字母 | 含义 |
C或c | Currency 货币格式 |
D或d | Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了) |
E或e | Exponent 指数格式 |
F或f | Fixed point 固定精度格式 |
G或g | General 常用格式 |
N或n | 用逗号分割千位的数字,比如1234将会被变成1,234 |
P或p | Percentage 百分符号格式 |
R或r | Round-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字 |
X或x | Hex 16进制格式 |
九、字符串拼接
9.1普通拼接方法:
static void Test7()
{
string data = string.Empty;
data += "AB";
data += "CD";
data += "EF";
Console.WriteLine(data);
//结果是ABCDEF,这种方法用到少还行,经常用会造成内存浪费
}
9.2StringBuilder类的使用(更加高效)
Append 在结尾追加
Insert 在知道位置插入指定字符串
Remove 移除指定字符串
AppendFormat追加的同时格式化
static void Test8()
{
StringBuilder sb = new StringBuilder();
sb.Append("AB");
sb.Append("CD");
sb.Append("EF");
string sb1= sb.ToString();
//把sb这个类变成string类型,
//虽然你直接用 Console.WriteLine(sb)输出结果;
//和下面结果是一样的,但是没法用啊,所以必须变成字符串在输出
Console.WriteLine(sb1);
sb.Insert(1, "aa");
Console.WriteLine(sb.ToString());//输出结果AaaBCDEF,第一个是0开始,之后加入aa
sb.Remove(1, 2);
Console.WriteLine(sb.ToString());//输出结果ABCDEF,又把刚才插入的2个删除了
sb.Clear();
Console.WriteLine(sb.ToString());//输出什么都没有,清除了
}