1.如何获取字符串中的每一个字符 通过遍历
//遍历:for foreach
for (int i = 0; i < str.Length; i++)
{
Console.Write(str[i]);
}
Console.WriteLine();
foreach (var item in str)
{
Console.WriteLine(item);
}
2.如何让获取字符串中字符的长度
Console.WriteLine(str.Length);
字符串常用方法
1.ToLower 将字符串中的大写字母转变为小写字母,其他字符不受影响,有返回:返回一个全新的字符串,原字符串不受影响
string str1=str.ToLower();
Console.WriteLine(str);
Console.WriteLine(str1);
2.ToUpper 将字符串中的小写字母转变为大写字母,其他字符不受影响,有返回:返回一个全新的字符串,原字符串不受影响
string str2 = str.ToUpper();
Console.WriteLine(str2);
3.Trim 去除字符串中两边的空格,返回一个全新的字符串,原字符串不受影响
string str3 = str.Trim();
Console.WriteLine(str3);
4.TrimStart 去除字符串中前面的空格,返回一个全新的字符串,原字符串不受影响
string str4 = str.TrimStart();
Console.WriteLine(str4);
5.TrimEnd 去除字符串中后面的空格,返回一个全新的字符串,原字符串不受影响
string str5 = str.TrimEnd();
Console.WriteLine(str5);
6.Contains 判断字符串中是否包含某个子字符串,返回布尔值(有:True 没有:False)
Console.WriteLine(str.Contains("ksk"));
//输出:True
7.运算符“+”:在字符串中是拼接符
Console.WriteLine("123"+"456");
//输出为:123456
8.字符串也可以判断是否相等,比较的流程是按照顺序一个一个字符的比较
if ("123" == "1 23")
{
Console.WriteLine("是");
}
else {
Console.WriteLine("否");
}
//输出:否
9.Split 分割 通过指定的字符分割字符串 返回一个数组
string userstr=Console.ReadLine();
string[] strarr = userstr.Split(',');
foreach (var item in strarr) {
Console.WriteLine(item);
}
10.Join 通过指定字符 转换为字符串
string s=String.Join(",", strarr);
Console.WriteLine(s);
11.Remove 移除指定字符
//从索引4位置开始,删除2个数据
string t = userstr.Remove(4, 2);
Console.WriteLine(t);
goto语句可以控制代码的执行顺序。
1.给代码的位置打一个标记,标记的命名自定义
2.使用goto语句,让代码回到标记的位置
//1.给代码的位置打一个标记,标记的命名自定义
inputsex:
Console.WriteLine("请输入性别:");
string str=Console.ReadLine();
if (str == "男")
{
Console.WriteLine("男性");
}
else if (str == "女")
{
Console.WriteLine("女性");
}
else {
Console.WriteLine("输入错误,请重新输入");
}
//2.使用goto语句,让代码回到标记的位置
goto inputsex;
注意:一般情况下使用goto进行内容验证,但是goto语句会造成代码的可读性变差,建议少用。
函数中的数据可以是单个的数据,也可以是一组数据(数组)。
以下是一个函数参数数组的实例:
static void Main(string[] args)
{
string str=Console.ReadLine();
string[] strarr = str.Split(" ");//字符串分割
int[] numarr= new int[strarr.Length];
for (int i = 0; i < numarr.Length; i++) {
numarr[i] = int.Parse(strarr[i]);
}
int[] a = GetMath(numarr);//方法调用
foreach (int i in GetMath(numarr))//访问输出,进行遍历
{
Console.WriteLine(i);
}
}
//自己定义的一个函数
//定义一个求最大值,最小值,平均值的方法
static int[] GetMath(int[] numarr)
{
int max = numarr[0];
int min = numarr[0];
int aver = 0;
int sum =0;
for (int i =1; i < numarr.Length; i++)
{ //最大值
if (max < numarr[i])
{
max = numarr[i];
}
//最小值
if (min > numarr[i]) {
min= numarr[i];
}
}
//平均值
for (int i = 0;i < numarr.Length; i++)
{
sum += numarr[i];
}
aver=sum/numarr.Length;
int[] result = new int[3] { max,min,aver};
return result;
}
这里的输出(最大值,最小值,chakan 平均值)我们通过构建一个整数数组将它们存放进来,返回这个整数数组,调用方法是再通过遍历数组中的元素才能看到最大值,最小值,平均值。如果返回值的类型不同,还无法存放在同一个类型数组中。
这不仅增加了程序的代码量,而且也不便于我们查看和二次使用。有没有方法可以解决这些问题,这就要用到out和ref关键字。
ref
和out
是用于按引用传递参数的关键字,允许方法直接操作调用者的变量。
对于不同类型的多返回值,我们就可以用out或ref。
out的主要作用是传出数据,因此传入的时候可以选择性的初始化,但是在方法中必须对其赋值。
以下是out的应用实例:
static void Main(string[] args)
{
Console.WriteLine("请输入数据(以空格隔开):");
string str=Console.ReadLine();
string[] num =str.Split(' ');
int[] numarr=new int[num.Length];
for (int i = 0; i < numarr.Length; i++)
{
numarr[i] = int.Parse(num[i]);
}
//out的主要作用是传出数据,因此传入的时候可以选择性的初始化,但是在方法中必须对其赋值。
int max;
int min;
double ping;
int sum;
Math(numarr, out max, out min, out sum, out ping);
Console.WriteLine($"最大值为:{max} 最小值为:{min} 总和为:{sum} 平均值为:{ping}");
}
//自定义方法:求最大值,最小值,总和,平均值。
static void Math(int[] numarr, out int max, out int min, out int sum, out double ping) {
max=numarr[0]; min=numarr[0]; sum=numarr[0];
for (int i = 1; i < numarr.Length; i++) {
if (max < numarr[i]) {
max= numarr[i];
}
if (min > numarr[i])
{
min= numarr[i];
}
sum += numarr[i];
}
ping=sum/numarr.Length;
}
ref的主要作用是传入数据,因此在传入数据之前必须要对其赋值
以下是ref的应用实例:
static void Main(string[] args)
{
Console.WriteLine("请输入数据(以空格隔开):");
string str=Console.ReadLine();
string[] num =str.Split(' ');
int[] numarr=new int[num.Length];
for (int i = 0; i < numarr.Length; i++)
{
numarr[i] = int.Parse(num[i]);
}
//ref 主要作用是传入数据,因此在传入数据之前必须要对其赋值
int max=0;
int min=0;
double ping = 0;
int sum = 0;
Math(numarr, ref max, ref min, ref sum, ref ping);
Console.WriteLine($"最大值为:{max} 最小值为:{min} 总和为:{sum} 平均值为:{ping}");
}
//自定义方法:求最大值,最小值,总和,平均值。
static void Math(int[] numarr, ref int max, ref int min, ref int sum, ref double ping) {
max=numarr[0]; min=numarr[0]; sum=numarr[0];
for (int i = 1; i < numarr.Length; i++) {
if (max < numarr[i]) {
max= numarr[i];
}
if (min > numarr[i])
{
min= numarr[i];
}
sum += numarr[i];
}
ping=sum/numarr.Length;
}
注意:out与ref的区别
1.out传递到参数,在方法中必须赋值,在声明变量是可以赋值也可以不赋值。
2.ref传递的参数,在声明时必须赋值,在方法中可以赋值,也可以不赋值。