iOS Club和你一起学C#(5)String的更多用法

iOS Club和你一起学C#(5)String的更多用法

在上一节我们讲到了数组,列表,字典这三种数据结构。

但是你有没有想过,我们之前的有一个东西他很像上面这三个,也属于一种集合

没错就是字符串,这一节我们将好好讲讲string这个数据类型

String是char[]的包装?

我们在使用string的时候确实可以这样做:

csharp 复制代码
string s = "Hello World";
Console.WriteLine(s[0]); //读取s的第一个字符
Console.WriteLine(s.Length); // 获取s的长度

我们甚至可以直接使用foreach来进行使用:

csharp 复制代码
foreach(char c in s)
    Console.WriteLine(c);

那么我们可以直接通过索引值来更新字符吗?

csharp 复制代码
s[0] = 'H';
// 错误
// this[int] is read-only

错误提示我们无法修改string的元素,也就是说,string跟char[]还是不太一样的

那么string跟char[]可以互转吗?

答案是可以的:

csharp 复制代码
// char[] -> string
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
string myString = new string(charArray);  // "Hello"
// 当然,我们也可以选定需要使用到哪些字符
charArray = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'};
string myString = new string(charArray, 0, 5);  // "Hello"

// string -> char[]
string myString = "Hello";
char[] charArray = myString.ToCharArray();

如上面的代码所示,我们可以通过**new string()来创建一个string,通过ToCharArray()**来获取char[]

那string这样的话,我进行string的操作就很难搞呀。就比如说我们想要进行字符串的更改,那就得重新创建一个string,然后接着了。

有没有更好的办法?

String的众多方法

是这样的,因为String的不可变性,有很多的方法

字符串操作

  1. Length : 获取字符串的长度。

    csharp 复制代码
        string str = "Hello, World!";
        int length = str.Length; // 13
  2. ToUpper() : 将字符串转换为大写。

    csharp 复制代码
        string str = "hello";
        string upperStr = str.ToUpper(); // "HELLO"
  3. ToLower() : 将字符串转换为小写。

    csharp 复制代码
        string str = "HELLO";
        string lowerStr = str.ToLower(); // "hello"
  4. Substring() : 提取子字符串。

    csharp 复制代码
        string str = "Hello, World!";
        string subStr = str.Substring(7, 5); // "World"
  5. IndexOf() : 查找子字符串或字符的第一次出现位置。

    csharp 复制代码
        string str = "Hello, World!";
        int index = str.IndexOf("World"); // 7
  6. LastIndexOf() : 查找子字符串或字符的最后一次出现位置。

    csharp 复制代码
        string str = "Hello, World! Hello!";
        int lastIndex = str.LastIndexOf("Hello"); // 13
  7. Contains() : 判断字符串是否包含指定的子字符串。

    csharp 复制代码
        string str = "Hello, World!";
        bool contains = str.Contains("World"); // true
  8. Replace() : 替换字符串中的指定子字符串。

    csharp 复制代码
        string str = "Hello, World!";
        string newStr = str.Replace("World", "C#"); // "Hello, C#!"
  9. Split() : 分割字符串为字符串数组。

    csharp 复制代码
        string str = "Hello, World!";
        string[] words = str.Split(' '); // ["Hello,", "World!"]
  10. Trim() : 去除字符串两端的空白字符。

    csharp 复制代码
        string str = "  Hello, World!  ";
        string trimmedStr = str.Trim(); // "Hello, World!"

StringBuilder ------ 将字符串拼接起来

事实上,我们在使用string的时候,如果要拼接很多的字符串,我们通常会这样做:

csharp 复制代码
int[] numbers = Enumerable.Range(0, 10001).ToArray();
StringBuilder builder = new StringBuilder("[");
foreach (int number in numbers){
    builder.Append(number); // 如果想要换行,使用builder.AppendLine(number);
}
builder.Append("]");
Console.WriteLine(builder.ToString());

这样的话就可以更加快速的生成和拼接字符串了。

练习

  1. 创建一个程序,要求用户输入一个字符串,然后输出该字符串的长度。
  2. 请使用string来写一个判断是否为回文数的程序
  3. 请写一个简易的指令程序,要求的指令如下:
    • help : 显示帮助信息
    • exit : 退出程序
    • add : 添加一个数字到列表中
    • remove : 删除一个数字
    • list : 列出所有数字
    • clear : 清空列表
    • print : 打印一个值

上期的答案

请使用列表实现斐波那契数列:

csharp 复制代码
List<int> fibonacci = new List<int>(){1,1};
int n = int.Parse(Console.ReadLine());
for(int i = 2; i < n; i++){
    fibonacci.Add(fibonacci[i-1] + fibonacci[i-2]);
}
Console.WriteLine(string.Join(",", fibonacci));

结尾

本节内容到此结束,我们今天讲了String的更多用法。

下节课我们来讲一个我们一直在用但是却一直不了解的东西。

相关推荐
草捏子4 小时前
从CPU原理看:为什么你的代码会让CPU"原地爆炸"?
后端·cpu
嘟嘟MD5 小时前
程序员副业 | 2025年3月复盘
后端·创业
胡图蛋.5 小时前
Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
java·spring boot·后端
无责任此方_修行中5 小时前
关于 Node.js 原生支持 TypeScript 的总结
后端·typescript·node.js
吃海鲜的骆驼6 小时前
SpringBoot详细教程(持续更新中...)
java·spring boot·后端
迷雾骑士6 小时前
SpringBoot中WebMvcConfigurer注册多个拦截器(addInterceptors)时的顺序问题(二)
java·spring boot·后端·interceptor
uhakadotcom7 小时前
Thrift2: HBase 多语言访问的利器
后端·面试·github
Asthenia04127 小时前
Java 类加载规则深度解析:从双亲委派到 JDBC 与 Tomcat 的突破
后端
方圆想当图灵7 小时前
从 Java 到 Go:面向对象的巨人与云原生的轻骑兵
后端·代码规范
Moment7 小时前
一份没有项目展示的简历,是怎样在面试里输掉的?开源项目或许是你的救命稻草 😭😭😭
前端·后端·面试