写在前面:前几日入门了一点点python,发现里面的字符串截取很好用,就特意搜集了一下C#的字符串截取,整理一下,以备不时之需。
C#分割字符串
- 使用单个分隔符分割字符串,这里的输出结果即为
1
2
3
4
5
当使用‘,’号将其分割后,会去掉’,'这个符号,并且注意Split内的类型为char而不是string,所以使用单引号而不是双引号。
static void Main(string[] args)
{
string a = "1,2,3,4,5";
string[] b = a.Split(',');
foreach(string c in b)
Console.WriteLine(c);
}
- 使用多个分隔符分割字符串,这里的输出结果为
1
2
3
4+5
当使用多个分隔符时,Split内是一个char数组,所有符合数组内的值都会被认作为分隔符。
static void Main(string[] args)
{
string a = "1,2,3-4+5";
string[] b = a.Split(new char[2] { ',', '-' });
foreach (string c in b)
Console.WriteLine(c);
}
- 使用单个或多个字符串来分割字符串,当string数组内仅有一个值时,即为单字符串分割,当数组内有多个值时,即为多字符串分割,这里输出的结果为
20
8
9
924
static void Main(string[] args)
{
string a = "201819192425";
string[] b = a.Split(new string[] { "1","25" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string c in b)
Console.WriteLine(c);
}
C#截取字符串
- 截取字符串前i个字符,原理为显示前i个或删除i个及之后的字符串来得到一个新的字符串,这里b和c的值均为
20181
20181
static void Main(string[] args)
{
int i = 5;
string a = "201819192425";
string b = a.Substring(0, i);
//显示从第0个到第i个字符,但不包括第i个
string c = a.Remove(i, a.Length - i);
//返回一个从i个开始删除,删除长度为总长度减i个(即删除i及之后的字符串)
Console.WriteLine("{0}\n{1}",b,c);
}
- 删去字符串前i个字符串,原理刚好与上个相反,这里b和c的值均为
9192425
9192425
static void Main(string[] args)
{
int i = 5;
string a = "201819192425";
string b = a.Remove(0, i);
//删除第0个到第i个字符,但不包括第i个
string c = a.Substring(i);
//从第i个字符开始,显示到结尾
Console.WriteLine("{0}\n{1}",b,c);
}
- 截取字符串后i个字符,原理与<1>相似,这里b和c的值均为
92425
92425
static void Main(string[] args)
{
int i = 5;
string a = "201819192425";
string b = a.Substring(a.Length - i);
//从第(总长度-i)个字符开始(即从倒数第i个开始),显示到结尾
string c = a.Remove(0,a.Length-i);
//删除第0个字符到第(总长度-i)个字符,返回余下的字符串
Console.WriteLine("{0}\n{1}",b,c);
}
- 删去字符串后i个字符串,原理刚好与上个相反,这里b和c的值均为
2018191
2018191
static void Main(string[] args)
{
int i = 5;
string a = "201819192425";
string b = a.Substring(0, a.Length - i);
//从第0个字符开始,显示到(总长度-i)个字符,但不包括该字符
string c = a.Remove(a.Length - i, i);
//删除从第(总长度-i)个字符开始,长度为i的字符串,包括第(总长度-i)个字符
Console.WriteLine("{0}\n{1}", b, c);
}
- 截取字符串中从第i个开始,长度为j的字符串,原理在注释标明,这里b的值为
18191
static void Main(string[] args)
{
int i = 3, j = 5;
string a = "201819192425";
string b = a.Substring(i - 1, j);
//因为排序从0开始,所以(i-1),即从(i-1)个字符开始显示长度为j的字符串
//就是从客观上从第三个开始显示到第(3+5-1)个字符,因为第i个也占一个长度
Console.WriteLine(b);
}
- 删除字符串中从第i个开始,长度为j的字符串,原理与上相反,代码仅需更改字符串b的赋值语句即可,这里b的值为
2092425
static void Main(string[] args)
{
int i = 3, j = 5;
string a = "201819192425";
string b = a.Remove(i - 1, j);
//删除第i个字符到第(i+j-1)个字符,并返回新字符串
Console.WriteLine(b);
}
- 替换字符串中的指定字符串,将所有符合要求的字符串片段均替换为另一个已给出的字符串片段,这里b的值为
20186666662425
static void Main(string[] args)
{
string a = "201819192425";
string b = a.Replace("19", "666");
//每当旧串中出现'19'时,即替换为'666',并将返回的新串赋值于b
//因为出现两次'19',所以也替换了两次'666'
//两者长度不一样所以替换后长度也发生改变
Console.WriteLine(b);
}
- 删除字符串中的指定字符串,将所有符合要求的字符串片段均替换为一个空值,即可达到删除的效果,这里b的值为
20182425
static void Main(string[] args)
{
string a = "201819192425";
string b = a.Replace("19", "");
//每当旧串中出现'19'时,替换为一个空串,可视为删除
Console.WriteLine(b);
}
- 截取字符串符合要求的最后一个值,这里按’9’对字符串进行分割,所以b的值为
2425
static void Main(string[] args)
{
string a = "201819192425";
string b = a.Substring(a.LastIndexOf("9") + 1);
//显示按要求分割的最后一个值
Console.WriteLine(b);
}
结语
由于学识短浅,如有不足还望指正,一起努力,加油,谢谢,谢谢