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的更多用法。

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

相关推荐
rannn_1111 天前
【苍穹外卖|Day3】公共字段自动填充、新增菜品功能、菜品分页查询功能、删除菜品功能、修改菜品功能、起售停售菜品
java·spring boot·后端·学习·项目
无名-CODING1 天前
SpringMVC处理流程完全指南:从请求到响应的完整旅程
java·后端·spring
BYSJMG1 天前
计算机毕设推荐:基于大数据的共享单车数据可视化分析
大数据·后端·python·信息可视化·数据分析·课程设计
短剑重铸之日1 天前
《设计模式》第九篇:三大类型之结构型模式
java·后端·设计模式·组合模式·代理模式·结构性模式
树码小子1 天前
SpringIoC & DI (4)DI详解(三种注入方式)
java·后端·spring·ioc
人道领域1 天前
SSM从入门到入土(Spring Bean实例化与依赖注入全解析)
java·开发语言·spring boot·后端
long3161 天前
Z算法(线性时间模式搜索算法)
java·数据结构·spring boot·后端·算法·排序算法
小楼v1 天前
如何实现AI生成应用部署功能
java·后端·ai·部署
李慕婉学姐1 天前
Springboot眼镜店管理系统ferchy1l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
暴躁小师兄数据学院1 天前
【WEB3.0零基础转行笔记】Golang编程篇-第4讲:Go语言中的流程控制
开发语言·后端·golang·web3·区块链