char类结构标识unicode字符。unicode标准使用称为码位的唯一的21位标量数字标识每个unicode字符,并定义UTF-16编码格式,这一个事指定如何将码位编码为一个或多个16位值的序列,每个16位值的范围为十六进制的0x0000~0xFFFF,并存储在char结构中。char对象的值是其16位数字(序号)值。
定义格式: char 变量名=‘初始值’; ——注意使用的是单引号,其值必须是单字符
定义三个字符(小写字母、数字、大写字母)并初始化,判断第一个是否为字母,如果是字母转化为大写,判断第一个是否为数字,将第三个转化为小写
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符及转义字符
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入三个字符");
//char a = Convert.ToChar(Console.ReadKey());
//char b = Convert.ToChar(Console.ReadKey());
//char c = Convert.ToChar(Console.ReadKey());
char a = 'a';
char b = '2';
char c = 'D';
if (char.IsLetter(a)) {
//char.ToUpper(a);
Console.WriteLine(char.ToUpper(a));
}
if (char.IsDigit(b)) {
Console.WriteLine("您输入的{0}是数字",b);
}
//char.ToLower(c);
Console.WriteLine(char.ToLower(c));
Console.ReadKey();
}
}
}
避免转义字符可以在字符串前加"@"符号,例如:@“C:\Users\Admin\Desktop”
提示永华输入英文名字,如果输入为 jack、Jack、JAck、jaCK等时,提示这么巧我也叫JACK,否则输出“您的名字好有个性”
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串转换
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入您的英文姓名");
string name = Console.ReadLine();
//ToUper方法可实现将英文转换为大写
string tempname = name.ToUpper() == "JACK" ? "这么巧,我也叫JACK" : "您的名字好有个性";
Console.WriteLine(tempname);
Console.WriteLine(name.ToUpper() == "JACK" ? "这么巧,我也叫JACK" : "您的名字好有个性");
string mystr = "Thi is An example of conversation on sting";
Console.WriteLine("大写字符串" + mystr.ToUpper());
Console.WriteLine("小写字符串" + mystr.ToLower());
char mychar = 'a';
Console.WriteLine("小写字符" +char.ToLower(mychar));
Console.WriteLine("大写字符" + char.ToUpper(mychar));
Console.ReadKey();
}
}
}
方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串比较
{
class Program
{
static void Main(string[] args)
{
string mystr1 = "Hell0";
string mystr2 = "Hi";
// == !=
Console.WriteLine(mystr1 == mystr2);
Console.WriteLine(mystr1 != mystr2);
// Equals
Console.WriteLine(string.Equals(mystr1,mystr2));
// Compare
string mystr3 = "Hell0";
string mystr4 = "Hell0";
Console.WriteLine(string.Compare(mystr3,mystr4,true)); //第三个参数为bool类型,默认为false,当为true时,则为忽略大小写比较
//返回负值代表字符串1小于字符串2,返回正直代表字符串1大于字符串2,
//计算机中字符串比较是按照位比较的,
//首先第一位,如果第一位相等则比较第二位,依次类推,如果第n位不相等,则谁的第哪位字符大,则响应字符串大,且n位后的字符不再比较
// CompareTo
Console.WriteLine(mystr1.CompareTo(mystr2));
Console.ReadKey();
}
}
}
可进一步参考:https://www.cnblogs.com/itjeff/p/5775665.html
string.Format(要转化的格式,格式化的对象)
string.Format(要转化的格式,格式化的对象一,格式化的对象二)
使用C格式:¥2,100.00
使用D格式:2100
使用E格式:2.100000E+003
使用F格式:2100.00
使用G格式:2100
使用N格式:2,100.00
使用P格式:210,000.00%
使用X格式:834 // 16进制格式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串的格式化
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(21.3);
Console.WriteLine("{0:C}", 21.3); //加入货币符号(中文系统加入¥,英文系统加入$,输出结果为¥21.3)
Console.WriteLine("字符串的格式化输出");
string s = string.Format("默认格式:---{0}\n" +"使用C格式:{0:C}\n" + "使用D格式:{0:D}\n" + "使用E格式:{1:E}\n" + "使用F格式:{1:F}\n" + "使用G格式:{0:G}\n" + "使用N格式:{0:N}\n" + "使用P格式:{0:P}\n" + "使用X格式:{0:X}\n", 2100,2100.33);
Console.WriteLine(s);
// 输出001——050
for (int i = 1; i < 51; i++)
{
string mystr = string.Format("{0:D3}", i); // 后面数字是输出几位数,例如:数字1,因为设定为3为,所以格式化后为001
Console.WriteLine(mystr);
}
Console.WriteLine(string.Format("{0:P3}", 0.56)); // 百分数标识,0.56百分数是56%,p后面数字是规定保留几位小数(默认保留2位小数),此处是3位,所以最终结果是56.000%
Console.WriteLine(string.Format("{0:C3}", 5600)); // "3"仍是保留3位小数的意思,输出结果是¥56.000
Console.WriteLine(string.Format("{0:E1}", 5600)); //科学技术发,保留1位小数
Console.WriteLine(string.Format("{0:F4}", 5600));
Console.WriteLine(string.Format("使用G格式:{0:G3}", 5600));
Console.WriteLine(string.Format("使用N格式:{0:N4}", 5600)); // 使用分割符“,” 每三位进行一次分割,保留4位小数
Console.WriteLine(string.Format("{0:X}", 5600));
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串的截取
{
class Program
{
static void Main(string[] args)
{
//
string mystr = "0123456789";
string mystr0 = mystr.Substring(3); //输出结果3456789
Console.WriteLine(mystr0);
Console.WriteLine(mystr.Substring(3,5)); //输出结果为345
Console.ReadKey();
//实现单词首字母大写,其余字母小写,如WORD转换为Word
Console.WriteLine("请输入一个单词不区分大小写");
string mystr2 = Console.ReadLine();
string changeMystr = mystr2.Substring(0, 1).ToUpper() + mystr2.Substring(0).ToLower();
Console.WriteLine(changeMystr);
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串分割
{
class Program
{
static void Main(string[] args)
{
string mystr = "darly-felx-lucy";
Console.WriteLine("源字符串为" + mystr);
Console.WriteLine("分割后的结果是:");
string[] changemystr = mystr.Split('-'); //结果是一个数组,因此在此声明一个字符串数组接收结果
foreach (string onestr in changemystr) //使用foreach遍历数组
{
Console.Write(onestr+"\t");
}
// 使用多个分割符号分割(此例用“-”“=”进行分割)
Console.WriteLine();
string mystr2 = "darly-felx-lucy=name";
Console.WriteLine("源字符串为" + mystr2);
Console.WriteLine("分割后的结果是:");
string[] changemystr2 = mystr2.Split(new char[] {'-','=' }); //结果是一个数组,因此在此声明一个字符串数组接收结果
foreach (string onestr in changemystr2) //使用foreach遍历数组
{
Console.Write(onestr + "\t");
}
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串合并
{
class Program
{
static void Main(string[] args)
{
// darly felx lucy 用(*)合并
string mystr1 = "darly";
string mystr2 = "felx";
string mysrt3 = "name";
string[] mystr4 = { "darly", "felx", "name" };
Console.WriteLine(mystr1+"*"+mystr2+"*" +mysrt3);
Console.WriteLine(string.Concat(mystr1, "*", mystr2, "*", mysrt3));
Console.WriteLine(string.Join("*",mystr4));
Console.WriteLine(string.Join("",mystr4));
Console.ReadKey();
}
}
}
插入
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串的插入与填充
{
class Program
{
static void Main(string[] args)
{
//字符串插入
string mystr = "www.darly.net";
string mystr2 = ".felx";
string insertstr = mystr.Insert(9, ".name"); //索引值8的位置开始插入字符串name
insertstr = insertstr.Insert(9, mystr2);
Console.WriteLine(insertstr);
Console.ReadKey();
//字符串填充
//PadRight 用来在字符串的结尾处添加指定(重复)字符串以达到指定长度
string padstr1 = "abc";
string padstr2 = "efghi";
string padstr3 = "haonan";
string padRight1 = padstr1.PadRight(7);
string padRight2 = padstr2.PadRight(7);
string padRight3 = padstr3.PadRight(7);
Console.WriteLine(padRight1+"a");
Console.WriteLine(padRight2 + "a");
Console.WriteLine(padRight3 + "a");
Console.ReadKey();
Console.WriteLine();
string padstr4 = "abc";
string padstr5 = "efghi";
string padstr6 = "haonan";
string padRight4 = padstr1.PadRight(7,'a'); //后面参数是单字母时必须是单引号
string padRight5 = padstr2.PadRight(7, 'a');
string padRight6 = padstr3.PadRight(7, 'a');
Console.WriteLine(padRight4 );
Console.WriteLine(padRight5 );
Console.WriteLine(padRight6 );
Console.ReadKey();
string padstr7 = "bu";
string padstr8 = "buduanxuexi";
string padLeft1 = padstr7.PadLeft(7,'b');
string padLeft2 = padstr8.PadLeft(7,'b'); //字符串本身已经查过规定总长度,不做补充,仍是buduanxuexi
Console.WriteLine(padLeft1);
Console.WriteLine(padLeft2);
Console.ReadKey();
}
}
}
删除是通过Remove来实现的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串删除
{
class Program
{
static void Main(string[] args)
{
//字符串删除
Console.WriteLine("删除字符串");
string mystr = "abcdefghijk";
string delstr = mystr.Remove(8);
string delstr2 = mystr.Remove(6, 2);
Console.WriteLine(mystr);
Console.WriteLine(delstr);
Console.WriteLine(delstr2);
Console.ReadKey();
Console.WriteLine("截取字符串");
string submstr = mystr.Substring(8); //输出结果是“ijk”
string submystr2 = mystr.Substring(6, 2); //输出结果是“gh”
Console.WriteLine(submstr);
Console.WriteLine(submystr2);
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串修剪
{
class Program
{
static void Main(string[] args)
{
//字符串的修改件
Console.WriteLine("通过Trime()实现");
string username = " darly ";
Console.WriteLine("原字符串是:" + username+"aa");
Console.WriteLine("把空格修剪后:"+username.Trim()+"aa");
Console.WriteLine("使用TrimStart():" + username.TrimStart() + "aa");
Console.WriteLine("使用TrimEnd():" + username.TrimEnd() + "aa");
Console.ReadKey();
//将字符串前后端的特定字符串修剪掉
string rawstr = "%###%%%username%%%####";
Console.WriteLine("修剪特定字符" + rawstr.Trim('#', '%')); //输出结果是username
Console.WriteLine("trim(包含所有需要修剪字符的字符串.ToCharArray)"+rawstr.Trim("#%".ToCharArray()));
string rawstr2 = "%###%%%u#ser%name%%%####";
Console.WriteLine("修剪特定字符" + rawstr.Trim('#', '%')); //输出结果是username
Console.WriteLine("修剪特定字符" + rawstr.Trim('#')); //输出结果是%###%%%username%%%,只指定一个参数时,遇到不符合的就输出
Console.WriteLine("修剪特定字符" + rawstr.Trim('%')); //输出结果是###%%%username%%%####
Console.WriteLine();
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串复制
{
class Program
{
static void Main(string[] args)
{
//copy复制是静态方法,只能通过“关键字.方法”进行引用
string mystr = "it is to test copying string";
string copyMstr = string.Copy(mystr);
Console.WriteLine(copyMstr);
Console.ReadKey();
// copyTo 非静态方法
char[] mycharArray = new char[20]; //申明一个字符数组,20是指字符数组的长度最大为20
//string copyToMystr = mystr.CopyTo(9, mycharArray, 0,13); 因CopyTo是无返回值的方法,所以无法赋值,此语句错误
mystr.CopyTo(9, mycharArray, 0, 12);
Console.WriteLine("CopyTo实现复制的结果");
Console.WriteLine(mycharArray);
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串替换
{
class Program
{
static void Main(string[] args)
{
//字符串替换Replace(非静态方法)
string mystr = "this is to replace sting";
string replaceResult = mystr.Replace("this", "it");
Console.WriteLine("将字符串中this替换为it");
Console.WriteLine("原字符串"+mystr+"替换后的结果"+replaceResult);
Console.WriteLine("将字符串中i替换为I");
//string replaceResult2 = mystr.Replace('i', 'I');
string replaceResult2 = mystr.Replace("i", "I"); //与上面注释的语句一样
Console.WriteLine("原字符串" + mystr + "替换后的结果" + replaceResult2);
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 字符串查找
{
class Program
{
static void Main(string[] args)
{
//字符串查找IndexOf
string mystr = "check string or char from a string";
Console.WriteLine("string第一次出现的位置");
int returnvalue = mystr.IndexOf("string");
Console.WriteLine(returnvalue);
Console.WriteLine("g第一次出现的位置");
int returnvalue2 = mystr.IndexOf('g');
Console.WriteLine(returnvalue2);
Console.ReadKey();
//字符串查找LastIndexOf
Console.WriteLine("string最后一次出现的位置");
int returnvalue3 = mystr.LastIndexOf("string");
Console.WriteLine(returnvalue3);
Console.WriteLine("g最后一次出现的位置");
int returnvalue4 = mystr.LastIndexOf("g");
Console.WriteLine(returnvalue4);
Console.ReadKey();
//判断一个字符串中是否包含字符串"name",如果包含输出第一次或最后一次出现的位置,如果不包含输出-1
Console.WriteLine("请输入一个字符串,用于判断是否包含name");
string inputstr = Console.ReadLine();
int startIndex = inputstr.IndexOf("name");
int endIndex = inputstr.LastIndexOf("name");
if (startIndex < 0) Console.WriteLine("您输入的字符串中不包含name");
else if (startIndex == endIndex)
{
Console.WriteLine("您输入的字符串中只包含一个name,起始位置是" + startIndex);
}
else {
Console.WriteLine("您输入的字符串中至少包含两个name");
Console.WriteLine("第一次出现的位置时" + startIndex);
Console.WriteLine("最后一次出现的位置时" + endIndex);
}
Console.ReadKey();
}
}
}
类型转换采用以下两种形式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _15类型装换
{
class Program
{
static void Main(string[] args)
{
//隐式转换
char mychar = 'a'; //char类型存储空间是16位
int myint = 100;
Console.WriteLine(mychar);
Console.WriteLine(myint);
int myint2 = mychar;
//因为myint是整型变量,将字符赋值给一个整型变量时,编译器隐式将字符转换为整型,
//因字符a对应的ASCI码是97所以将字符转换为整型后,对应的值是97,因此下面输出结果为97
Console.WriteLine(myint2);
//字符可以隐式转换为整型,但整型不能隐式转换为字符
//mychar = myint;
mychar = (Char)myint;
Console.WriteLine(mychar); // 100对应ASIC码100对应字符d,所以输出为d
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _15类型装换
{
class Program
{
static void Main(string[] args)
{
//字符可以隐式转换为整型,但整型不能隐式转换为字符 此时需要显示转换
//mychar = myint;
mychar = (Char)myint;
Console.WriteLine(mychar); // 100对应ASIC码100对应字符d,所以输出为d
//强制转换会丢失部分信息,例如char为16位存储空间,最大存储数为65536;当转换为65538时则会移除
int myint3 = 65636;
char mychar3 = (char)myint3; //因为65636-65536=100(即溢出100);因此实际转换后为ASIC码100对应的字符d
Console.WriteLine("强制转换数据溢出后的,转换结果");
Console.WriteLine(mychar3);
//检查溢出
//char mychar4 = checked((char)myint3); //当转换结果有溢出时报错
Console.ReadKey();
}
}
}
当转换为字符串类型时:可以用Convert.ToString(转换内容)也可以用 转换内容.ToString()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _15类型装换
{
class Program
{
static void Main(string[] args)
{
string mystr= "abc";
string mystr2 = "100";
int myint = 100;
Console.WriteLine("将整型转换为字符串");
string mystr3 = Convert.ToString(myint);
string mystr4 = myint.ToString();
Console.WriteLine("convert" + mystr3);
Console.WriteLine("ToString转换"+mystr4); //与上面的语句完全相同
Console.WriteLine("将字符串转换为整型");
int myint2 = Convert.ToInt32(mystr2);
Console.WriteLine(mystr2);
Console.ReadKey();
}
}
}
当转换为整型时可以中 int.parse()进行转换
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _15类型装换
{
class Program
{
static void Main(string[] args)
{
string mystr1 = "100";
int myint = int.Parse(mystr1);
Console.WriteLine(myint);
Console.ReadKey();
int myint2 = 100;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 转换类型的不同
{
class Program
{
static void Main(string[] args)
{
string mystr = "123";
int myint = 100;
double mydouble = 12.33;
string strResult;
int intResult;
// string——>int
//1、(int) 次方法不适用将string转换为int,只能转换数值类型为int,而不能转换引用类型
// 不会四舍五入,直接舍掉小数
//intResult = (int)mystr;
intResult = (int)mydouble;
Console.WriteLine(intResult);
//2、Convert.Toint(); 他会将null转换为0
//小数是0-4;直接舍掉,
//小数5:看整数位,返回一个临近的偶数位,例如4.5返回是4,7.5则返回8
//小数是6-9:进位
intResult = Convert.ToInt32(mystr);
Console.WriteLine(intResult);
//3. int.parse() 不能转换空值 只能将string转换为int,
intResult = int.Parse(mystr);
//int intResult2 = int.Parse(mydouble); //只能将string转换为int,
string mystr2 = "14.33";
//int intResult2 = int.Parse(mystr2); //执行过程中会报错,因为只能转换不带小数点的数字字符串
double doubleResult = double.Parse(mystr2);
Console.WriteLine(intResult);
Console.WriteLine(doubleResult);
//int——>string
// strResult = (string)myint //强制缓缓只能转换数值类型的
strResult = Convert.ToString(myint);
string strResult2 = myint.ToString(); //与上面方法完全一样
//没有string.Parse()方法
Console.ReadKey();
}
}
}
在使用system.string类中方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下与创建性的String对象相关的系统开销可能非常高
步骤
实例: 原有字符串 https://blog.csdn.net/Mwyldnje2003?spm=1001.2100.3001.5343
要求:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; // 1、引入命名空间
using System.Threading.Tasks;
namespace _17stringBuilder类
{
class Program
{
static void Main(string[] args)
{
//2、初始化
StringBuilder mystrBuilder = new StringBuilder("https://blog.csdn.net/Mwyldnje2003?spm=1001.2100.3001.5343");
//3、使用
//3.1 追击字符串
Console.WriteLine("=============================Append==================================");
Console.WriteLine(mystrBuilder.Append("是一个很好的学习播客"));
//3.2 插入字符串
Console.WriteLine("=============================Insert==================================");
Console.WriteLine(mystrBuilder.Insert(57, "\n")); //第一个参数是插入的位置,第二个参数是插入的字符串
//3.3 移除字符串
Console.WriteLine("=============================Remove==================================");
Console.WriteLine(mystrBuilder.Remove(57, 1)); //第一个参数是移除字符的起始位置,第二个参数是移除几个字符
//3.4 替换字符串
Console.WriteLine("=============================Repalce==================================");
Console.WriteLine(mystrBuilder.Replace("很好", "神奇")); //第一个参数是移除字符的起始位置,第二个参数是移除几个字符
//3.5 按照指定格式来添加对应的字符串
Console.WriteLine("=============================AppendFormat==================================");
int money = 20000000;
Console.WriteLine(mystrBuilder.AppendFormat("我可以涨工资{0:c}",money)); //第一个参数是移除字符的起始位置,第二个参数是移除几个字符
//3.6 在字符串末尾添加一个换行符
Console.WriteLine("=============================AppendLine==================================");
Console.WriteLine(mystrBuilder);
Console.Write(mystrBuilder.AppendLine());
Console.WriteLine("上一条语句应该能够自动换行,此内容另起一行输出就说明上一条语句自动换行了");
Console.ReadKey();
}
}
}
提示用户输入字符串1和字符串2,然后比较字符串1与字符串2,并将大的字符串中的各元素用|进行间隔输出
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 总结及实例
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入两个字符串,每个字符串以回车确认输入,我们将会以\"|\"来进行分隔");
string mystr = Console.ReadLine();
string mystr2 = Console.ReadLine();
string maxstr;
if (string.Compare(mystr, mystr2) > 0)
{
maxstr = mystr;
}
else {
maxstr = mystr2;
}
maxstr = string.Compare(mystr, mystr2) > 0 ? mystr : mystr2; // 与上面的if语句作用相同
if (string.Compare(mystr, mystr2) > 0) maxstr = mystr;
else maxstr = mystr2; //if语句简略写法
//利用SubString来进行分割
for (int i = 0; i < maxstr.Length; i++) // Length是获取长度
{
Console.Write(maxstr.Substring(i, 1));
//if (i < maxstr.Length) Console.Write("|");
//i < maxstr.Length ? Console.Write("|") : Console.WriteLine(); 此语句错误
}
Console.ReadKey();
}
}
}