在C#中,字符(char
)和字符串(string
)是表示文本数据的重要数据类型。
字符(char
)是用于表示单个字符的数据类型,使用单引号括起来。例如,'A'、'b'、'3'都是字符。C#中的字符类型是Unicode字符集的一部分,可以表示各种语言中的字符。
字符串(string
)是一个字符序列,用于表示一个或多个字符的数据类型,使用双引号括起来。例如,"Hello"、"World"、"123"都是字符串。字符串是不可变的,即一旦创建,就不能被修改。如果需要对字符串进行修改,可以使用字符串方法来创建新的字符串。
C#提供了许多内置的字符和字符串操作方法,可以用于处理字符和字符串,例如:
- 比较字符串:使用
==
运算符或string.Equals()
方法可以比较两个字符串是否相等。 - 连接字符串:使用
+
运算符或string.Concat()
方法可以将多个字符串连接起来。 - 获取字符串长度:使用
string.Length
属性可以获取字符串的长度。 - 访问字符串中的字符:可以使用索引来访问字符串中的单个字符,例如
str[0]
表示访问字符串str
中的第一个字符。 - 字符串的拆分和连接:使用
string.Split()
方法可以将字符串拆分为子字符串,使用string.Join()
方法可以将多个字符串连接为一个字符串。 - 查找和替换:使用
string.IndexOf()
方法可以查找子字符串在字符串中的位置,使用string.Replace()
方法可以替换字符串中的子字符串。
字符和字符串在C#中广泛应用于文本处理、用户界面、数据存储和通信等各种场景。了解字符和字符串的基本操作和方法可以帮助开发人员有效地处理和操作文本数据。
格式化字符串
这段代码演示了在C#中操作字符和字符串的一些基本操作:
- 使用索引获取字符串中的指定字符:通过
Str1[1]
可以获取字符串Str1
中索引为1的字符。 - 转换字符的大小写:使用
Char.ToUpper()
方法将字符转换为大写,使用Char.ToLower()
方法将字符转换为小写。 - 判断字符的属性:使用
Char.IsNumber()
判断字符是否为数字,使用Char.IsUpper()
判断字符是否为大写,使用Char.IsLower()
判断字符是否为小写。 - 将字符串转换为字符数组:使用
ToCharArray()
方法将字符串转换为字符数组,可以对字符数组进行遍历和操作。 - 将字符数组转换为字符串:使用
string
类的构造函数,传入字符数组可以创建一个新的字符串。 - 格式化输出字符串:使用
String.Format()
方法可以根据指定的格式将多个字符串拼接成一个新的字符串。
这些操作可以帮助你处理字符和字符串,进行字符的提取、大小写转换、字符数组和字符串之间的转换以及格式化输出字符串。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string Str1 = "hello lyshark";
// 取出字符串中指定的字符
char Str2 = Str1[1];
Console.WriteLine("字符: {0} 转大写: {1} 转小写: {2}", Str2, Char.ToUpper(Str2), Char.ToLower(Str2));
Console.WriteLine("是否为数字: {0} 是否为大写: {1} 是否为小写: {2}",
Char.IsNumber(Str2), Char.IsUpper(Str2), Char.IsLower(Str2));
// 将字符串转化为字符数组
char[] chs = Str1.ToCharArray();
for (int x = 0; x < chs.Length - 1; x++)
Console.Write("{0} ", chs[x]);
Console.WriteLine();
// 将字符数组转化为字符串
string Str3 = new string(chs);
Console.WriteLine(Str3);
// 格式化输出字符串
string Str4 = "hello";
string Str5 = "lyshark";
string new_str = String.Format("{0},{1}", Str4, Str5);
Console.WriteLine("格式化后的字符串: {0}", new_str);
Console.ReadKey();
}
}
}
比较字符串
这段代码演示了在C#中比较字符串的几种方法:
- 使用
String.Compare()
方法比较字符串:该方法返回一个整数值,如果字符串相等,则返回0;如果第一个字符串在字典顺序上排在第二个字符串之前,则返回一个负数;如果第一个字符串在字典顺序上排在第二个字符串之后,则返回一个正数。 - 使用
String.CompareTo()
方法比较字符串:该方法是String
类的实例方法,与String.Compare()
功能类似,返回一个整数值。 - 使用
String.Equals()
方法比较字符串:该方法用于判断两个字符串是否相等,返回一个布尔值。还可以使用静态方法String.Equals()
进行字符串比较。
这些方法都可以用于比较字符串的相等性和顺序,通过返回的结果可以判断字符串的比较结果。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string Str1 = "hello lyshark";
string Str2 = "hello world";
string Str3 = "hello lyshark";
// Compare 比较字符串,相等返回0不相等返回-1
Console.WriteLine("Str1 比较 Str2 " + String.Compare(Str1, Str2));
Console.WriteLine("Str1 比较 Str3 " + String.Compare(Str1, Str3));
// Compare To 比较字符串
Console.WriteLine("Str1 比较 Str2 " + Str1.CompareTo(Str2));
Console.WriteLine("Str1 比较 Str3 " + Str1.CompareTo(Str3));
// Equals 比较字符串
Console.WriteLine("Str1 比较 Str2 " + Str1.Equals(Str2));
Console.WriteLine("Str1 比较 Str3 " + String.Equals(Str1,Str3));
Console.ReadKey();
}
}
}
截取或分割字符串
这段代码演示了在C#中对字符串进行截取和分割的方法:
- 使用
Substring()
方法进行字符串截取:该方法接受两个参数,第一个参数是截取的起始位置,第二个参数是截取的长度。它返回一个新的字符串,包含从起始位置开始的指定长度的字符。 - 使用
Split()
方法进行字符串分割:该方法根据指定的分割字符将字符串分割成多个子字符串,并返回一个字符串数组。分割字符可以是单个字符或多个字符组成的数组。在代码中,使用Split()
方法将字符串按照^
、#
和,
进行分割,并将结果存储在字符串数组中。 - 针对特定格式的日期字符串进行切割:在这段代码中,使用
Split()
方法将日期字符串"2019-12-12"
按照-
进行切割,并将切割结果存储在字符串数组中。然后,通过索引访问数组元素,获取年、月、日的值。
这些方法可以帮助你对字符串进行截取和分割,从而提取出需要的信息或对字符串进行处理。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 从第一个位置开始截取3个字符
string Str1 = "hello lyshark";
string Str2 = "";
Str2 = Str1.Substring(1, 3);
Console.WriteLine("截取数据: {0}", Str2);
// 分割字符串变量
string Str3 = "用^一生#下载,百度网盘,资源";
char[] separator = { '^', '#', ',' }; // 定义分割字符
String[] split_string = new String[100];
split_string = Str3.Split(separator);
for (int x = 0; x < split_string.Length;x++ )
{
Console.WriteLine("切割计数: {0} 切割字符串: {1}", x, split_string[x]);
}
// 针对时间的切割方法
string str = "2019-12-12";
char[] chs = { '-' };
string[] date = str.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("{0}年 {1}月 {2}日", date[0], date[1], date[2]);
Console.ReadKey();
}
}
}
插入或删除字符串
这段代码演示了在C#中对字符串进行插入、填充、去空格和删除的方法:
- 使用
Insert()
方法进行字符串插入:该方法接受两个参数,第一个参数是插入的位置,第二个参数是要插入的字符串。它返回一个新的字符串,其中包含在指定位置插入的字符串。 - 使用
PadLeft()
和PadRight()
方法进行字符串填充:这两个方法接受两个参数,第一个参数是填充后的总长度,第二个参数是用于填充的字符。PadLeft()
方法在字符串的左侧进行填充,PadRight()
方法在字符串的右侧进行填充。它们返回一个新的字符串,其中包含填充后的结果。 - 使用
Trim()
、TrimStart()
和TrimEnd()
方法去除字符串中的空格:Trim()
方法去除字符串两端的空格,TrimStart()
方法去除字符串开头的空格,TrimEnd()
方法去除字符串末尾的空格。它们返回一个新的字符串,其中不包含空格。 - 使用
Remove()
方法删除字符串的指定部分:该方法接受两个参数,第一个参数是删除的起始索引,第二个参数是要删除的字符数。它返回一个新的字符串,其中包含删除指定部分后的结果。
这些方法可以帮助你对字符串进行插入、填充、去空格和删除操作,从而达到对字符串进行修改和处理的目的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 插入字符串的演示
string Str1 = "下载";
Str1 = Str1.Insert(0, "用一生时间");
Console.WriteLine(Str1);
string Str2;
Str2 = Str1.Insert(Str1.Length, "百度网盘里面的资源");
Console.WriteLine(Str2);
// 填充字符串的演示
string Str3;
Str3 = Str1.PadLeft(Str1.Length + 3, '*'); // 在左侧填充
Console.WriteLine("左侧填充: " + Str3);
Str3 = Str1.PadRight(Str1.Length + 3, '*'); // 在右侧填充
Console.WriteLine("右侧填充: " + Str3);
// 去空格的实现
string str = " hahahah ";
str = str.Trim();
str = str.TrimStart();
str = str.TrimEnd();
// 删除字符串的演示
Console.WriteLine("从索引3处向后删除: " + Str3.Remove(3));
Console.WriteLine("删除指定个数的字符: " + Str3.Remove(1, 3));
Console.ReadKey();
}
}
}
拷贝与替换字符串
这段代码演示了在C#中对字符串进行拷贝和替换的方法:
- 使用
string.Copy()
方法进行字符串拷贝:该方法接受一个字符串参数,并返回一个新的字符串,其中包含与原始字符串相同的内容。这种拷贝方式创建了一个新的字符串对象,其内容与原始字符串相同。 - 使用
Replace()
方法进行字符串替换:该方法接受两个参数,第一个参数是要替换的字符或字符串,第二个参数是用于替换的字符或字符串。它返回一个新的字符串,其中包含进行替换后的结果。可以使用Replace()
方法来替换字符串中的特定字符或字符串。
在代码中的示例中,string.Copy()
方法用于普通的字符串拷贝操作,Replace()
方法用于进行字符串的替换操作。你可以根据需要使用这些方法来对字符串进行拷贝和替换,实现相应的功能和逻辑。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 普通的拷贝字符串
string Str1 = "hello lyshark";
string Str2;
Str2 = string.Copy(Str1);
Console.WriteLine("普通拷贝: " + Str2);
// 替换字符串
string Str3 = "one world,one dream";
string Str4 = Str3.Replace(',','*');
Console.WriteLine("将,替换为** => " + Str4);
string Str5 = Str3.Replace("one", "One");
Console.WriteLine("将one替换为One =>" + Str5);
Console.ReadKey();
}
}
}
寻找开头结尾字符串
这段代码演示了在C#中寻找字符串开头和结尾、从指定位置开始搜索字符串以及从结束位置开始搜索字符串的方法:
- 使用
StartsWith()
方法和EndsWith()
方法寻找字符串的开头和结尾:StartsWith()
方法用于检查字符串是否以指定的字符或字符串开头,EndsWith()
方法用于检查字符串是否以指定的字符或字符串结尾。这两个方法都返回一个布尔值,指示是否满足条件。 - 使用
IndexOf()
方法从指定位置开始搜索字符串:IndexOf()
方法接受两个参数,第一个参数是要搜索的字符或字符串,第二个参数是搜索的起始位置。它返回第一个匹配项的索引位置,如果找不到匹配项,则返回-1。 - 使用
LastIndexOf()
方法从结束位置开始搜索字符串:LastIndexOf()
方法与IndexOf()
方法类似,但是它从字符串的结束位置开始搜索,找到最后一个匹配项的索引位置。
在代码示例中,使用了这些方法来查找字符串的开头和结尾、从指定位置开始搜索字符串以及从结束位置开始搜索字符串,并打印相应的结果。你可以根据需要使用这些方法来进行字符串的搜索和定位。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str = "今天天气好晴朗,处处好风光";
// 寻找字符串开头结尾
if (str.StartsWith("今") && str.EndsWith("光"))
Console.WriteLine("ok");
// 从指定字符开始搜索,并返回位置
int index = str.IndexOf("天气", 0);
Console.WriteLine(index);
// 从结束位置开始搜索
string path = @"c:\a\b\c苍\d\e苍\f\g\\fd\fd\fdf\d\vfd\苍老师.wav";
int path_index = path.LastIndexOf("\\");
Console.WriteLine(path_index);
Console.ReadKey();
}
}
}
串联字符串
这段代码演示了在C#中使用string.Join()
方法将多个字符串连接在一起,并使用指定的分隔符进行串联,以及使用string.Split()
方法将字符串拆分成字符串数组。
- 使用
string.Join()
方法将多个字符串连接在一起:string.Join()
方法接受两个参数,第一个参数是分隔符,用于将多个字符串分隔开,第二个参数是要连接的字符串数组或可枚举集合。它返回一个由多个字符串组成的单个字符串,字符串之间使用指定的分隔符进行连接。 - 使用
string.Split()
方法将字符串拆分成字符串数组:string.Split()
方法接受一个或多个分隔符字符作为参数,并将原始字符串根据分隔符进行拆分,返回一个字符串数组。
在代码示例中,首先使用string.Join()
方法将多个字符串用竖线|
进行串联,并将结果打印输出。然后,使用string.Split()
方法将串联后的字符串按照竖线|
进行拆分,并将拆分后的字符串数组打印输出。
这些方法可以方便地在字符串之间进行连接和拆分操作,适用于需要处理多个字符串的情况,例如将多个字符串合并为一个字符串或从一个字符串中提取特定的部分。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Join 将指定字符串使用|串联起来
string name_str = string.Join("|", "张三", "李四", "王五", "赵六", "田七");
Console.WriteLine(name_str);
// 将字符串切割后串联去掉竖线
String[] u_name = { "张三", "李四" ,"王五"};
string ptr = string.Join("|", u_name);
Console.WriteLine("合并后: " + ptr);
string[] strNew = ptr.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("去掉| = " + strNew[1]);
for (int x = 0; x < strNew.Length;x++ )
Console.WriteLine("去掉竖线 [{0}] = {1}",x,strNew[x]);
Console.ReadKey();
}
}
}
字符串倒序输出
这段代码演示了如何在C#中实现字符串的反转。
-
反转字符串:首先,将字符串转换为字符数组
char[]
,然后使用一个循环来交换数组中对称位置上的字符,即将第一个字符和最后一个字符交换,第二个字符和倒数第二个字符交换,以此类推,直到达到数组中间位置。最后,将交换后的字符数组转换回字符串形式,并打印输出反转后的结果。 -
反转单词:首先,使用
string.Split()
方法将字符串按照空格进行拆分,得到单词数组。然后,使用一个循环来交换数组中对称位置上的单词,即将第一个单词和最后一个单词交换,第二个单词和倒数第二个单词交换,以此类推,直到达到数组中间位置。最后,使用string.Join()
方法将交换后的单词数组使用空格连接成一个字符串,并打印输出反转后的结果。
这两个示例演示了如何通过操作字符数组或字符串数组来实现字符串的反转,可以根据具体需求选择合适的方法进行操作。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str = "hello lyshark";
// 实现反转字符串 hello -> olleh
char[] chs = str.ToCharArray();
for (int x = 0; x < chs.Length / 2;x++ )
{
char tmp = chs[x];
chs[x] = chs[chs.Length - 1 - x];
chs[chs.Length - 1 - x] = tmp;
}
str = new string(chs);
Console.WriteLine("反转后的结果: {0}", str);
// 实现反转单词 hello lyshark -> lyshark hello
string str1 = "hello lyshark";
string[] strNew = str1.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
for (int x = 0; x < strNew.Length / 2; x++)
{
string tmp = strNew[x];
strNew[x] = strNew[strNew.Length - 1 - x];
strNew[strNew.Length - 1 - x] = tmp;
}
str1 = string.Join(" ", strNew);
Console.WriteLine("反转后的结果: {0}", str1);
Console.ReadKey();
}
}
}
IndexOf搜索字符串
这段代码演示了如何使用IndexOf
方法在C#中查找字符串中特定字符的位置。
-
切割特定字符:首先,通过
IndexOf
方法找到字符'@'
在字符串中的位置。然后,使用Substring
方法将字符串切割成两部分,分别是'@'
之前的部分和'@'
之后的部分,得到用户名和主机名。最后,打印输出用户名和主机名。 -
寻找指定字符出现位置:首先,使用
IndexOf
方法找到字符'a'
在字符串中第一次出现的位置,并初始化计数器count
为1。然后,进入一个循环,在循环中继续使用IndexOf
方法,但这次传入的第二个参数是上一次找到的位置加1,这样就可以找到下一次出现字符'a'
的位置。每次找到位置后,递增计数器count
,并打印输出当前出现位置。当IndexOf
方法返回-1时,表示没有找到更多的字符'a'
,循环结束。
这两个示例展示了如何利用IndexOf
方法在字符串中查找特定字符的位置,并进行相关操作。这在处理字符串中的特定部分或进行计数等操作时非常有用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 通过indexOf 切割特定字符
string email = "admin@blib.cn";
int index = email.IndexOf("@");
string userName = email.Substring(0, index);
string userHost = email.Substring(index + 1);
Console.WriteLine("名字: {0} 主机: {1}",userName,userHost);
// 寻找指定字符出现位置
string str = "abcd wwabcd asdcdsac waascd ascsaaa";
int index1 = str.IndexOf('a');
int count = 1;
while(index1 != -1)
{
count++;
index1 = str.IndexOf('a', index1 + 1);
if (index1 == -1)
break;
Console.WriteLine("第{0}次出现a的位置是{1}", count, index1);
}
Console.ReadKey();
}
}
}