字符串内部
学习如何访问字符串中的各个元素。
集合
集合是一个通用术语,用于将多个值组合成一个整体。我们在现实生活中经常使用集合——一本书是页面的集合,一列火车是车厢的集合,一个衣柜是衣物的集合。
字符串
字符串是由字符组成的集合,通常被视为一个单一单元。字符串用于存储名称、地址、消息等文本值。
字符串的初始化
以下程序演示了字符串的初始化:
1class Test 2{ 3 static void Main() 4 { 5 string string1 = "It is a string"; 6 System.Console.WriteLine(string1); 7 } 8}
在第5行,我们使用双引号 "" 声明一个 string 类型变量。
访问字符串中的字符
C# 允许我们通过整数索引来访问字符串中的单个字符。方法是在字符串变量名后用方括号包含索引号,如下所示的程序:
1class Test 2{ 3 static void Main() 4 { 5 string String1 = "Educative"; 6 System.Console.WriteLine(String1); 7 8 System.Console.WriteLine(String1[0]); 9 System.Console.WriteLine(String1[1]); 10 System.Console.WriteLine(String1[2]); 11 System.Console.WriteLine(String1[3]); 12 System.Console.WriteLine(String1[4]); 13 System.Console.WriteLine(String1[5]); 14 System.Console.WriteLine(String1[6]); 15 System.Console.WriteLine(String1[7]); 16 System.Console.WriteLine(String1[8]); 17 } 18}
上述代码逐行显示字符串的各个字符。第一个字符位于索引 0,索引沿字符串线性递增,如以下图示:
同样的程序也可以使用循环重写,以实现相同的功能,如下所示:
1class Test 2{ 3 static void Main() 4 { 5 string String1 = "Educative"; 6 int length = 9; 7 for (int i = 0; i < length; i++) 8 { 9 System.Console.WriteLine(String1[i]); 10 } 11 } 12}
字符串连接
使用 + 运算符将两个字符串连接起来称为连接,如下代码所示:
1class Test 2{ 3 static void Main() 4 { 5 string str1 = "Hello"; 6 string str2 = "Educative"; 7 string str3 = str1 + str2; 8 string str4 = str1 + " " + str2; 9 10 System.Console.WriteLine("str1: " + str1); 11 System.Console.WriteLine("str2: " + str2); 12 System.Console.WriteLine("str3: " + str3); // 无空格连接 13 System.Console.WriteLine("str4: " + str4); // 有空格连接 14 } 15}
在上述代码中:
- 第7行:我们将
str1和str2连接,并将结果存储在str3中。两个单词之间没有空格。 - 第8行:我们将
str1、" "和str2连接,并将结果存储在str4中。两个单词之间有空格。
字符串操作练习
以下是几个用于练习 C# 中字符串操作的示例程序。点击“显示答案”按钮将显示解决相应问题的程序。你可以将给出的解决方案复制粘贴到代码编辑器中,以确保你的输出与给定答案一致。编程中可能存在多种正确的解决方案。
反向打印字符
编写一个程序,逐行反向显示字符串中的每个字符。
示例输入
1"Educative"
示例输出
1e 2v 3i 4t 5a 6c 7u 8d 9E
1class Test 2{ 3 static void Main() 4 { 5 string String1 = "Educative"; 6 // 请在此处编写代码 7 } 8}
你可以在上方的代码编辑器中运行以下代码:
1class Test 2{ 3 static void Main() 4 { 5 string String1 = "Educative"; 6 7 System.Console.WriteLine(String1[8]); 8 System.Console.WriteLine(String1[7]); 9 System.Console.WriteLine(String1[6]); 10 System.Console.WriteLine(String1[5]); 11 System.Console.WriteLine(String1[4]); 12 System.Console.WriteLine(String1[3]); 13 System.Console.WriteLine(String1[2]); 14 System.Console.WriteLine(String1[1]); 15 System.Console.WriteLine(String1[0]); 16 } 17}
在上述程序中:
- 我们使用变量
String1存储文本 "Educative"。 - 我们从最后一个索引开始,按逆序逐行显示
String1的各个字符。
或者
你也可以在上方的代码编辑器中运行以下代码:
1class Test 2{ 3 static void Main() 4 { 5 string String1 = "Educative"; 6 7 for (int i = 8; i >= 0; i--) 8 { 9 System.Console.WriteLine(String1[i]); 10 } 11 } 12}
在上述程序中:
- 我们使用变量
String1存储文本 "Educative"。 - 我们使用索引和
for循环,按逆序逐行显示String1的各个字符。
字符串左移
编写一个程序,将字符串中的字符向左移动一位,并用句点替换最后一个位置。
示例输入
1myString = "Educative"
示例输出
1ducative.
提示:使用字符串连接。
1using System; 2class Test 3{ 4 static void Main() 5 { 6 string str1 = "Educative"; 7 // 请在此处编写代码 8 } 9}
你可以在上方的代码编辑器中运行以下代码:
1using System; 2class Test 3{ 4 static void Main() 5 { 6 string str1 = "Educative"; 7 string str2 = ""; 8 str2 += str1[1]; 9 str2 += str1[2]; 10 str2 += str1[3]; 11 str2 += str1[4]; 12 str2 += str1[5]; 13 str2 += str1[6]; 14 str2 += str1[7]; 15 str2 += str1[8]; 16 str2 = str2 + "."; 17 Console.WriteLine(str2); 18 } 19}
在上述程序中:
- 我们使用变量
str1存储文本 "Educative"。 - 然后我们创建一个空字符串
str2。 str2 += str1[1]将字符连接到str2,相当于str2 = str2 + str1[1]。- 对其余索引重复此步骤。
反转字符串
编写一个程序,将字符串的内容以相反顺序存储到另一个字符串中。
示例输入
1"Educative"
示例输出
1evitacudE
1class Test 2{ 3 static void Main() 4 { 5 string str1 = "Educative"; 6 // 请在此处编写代码 7 } 8}
你可以在上方的代码编辑器中运行以下代码:
1class Test 2{ 3 static void Main() 4 { 5 string str1 = "Educative"; 6 string str2 = ""; 7 str2 += str1[8]; 8 str2 += str1[7]; 9 str2 += str1[6]; 10 str2 += str1[5]; 11 str2 += str1[4]; 12 str2 += str1[3]; 13 str2 += str1[2]; 14 str2 += str1[1]; 15 str2 += str1[0]; 16 System.Console.WriteLine(str2); 17 } 18}
在上述程序中:
- 我们使用变量
str1存储文本 "Educative"。 - 然后我们创建一个空字符串
str2。 str2 += str1[8]将字符连接到str2,相当于str2 = str2 + str1[8]。- 对其余索引重复此步骤。
或者
你也可以在上方的代码编辑器中运行以下代码:
1class Test 2{ 3 static void Main() 4 { 5 string str1 = "Educative"; 6 string str2 = ""; 7 8 for (int j = 8; j >= 0; j--) 9 { 10 str2 += str1[j]; 11 } 12 13 System.Console.WriteLine(str2); 14 } 15}
在上述程序中:
- 我们使用变量
str1存储文本 "Educative"。 - 然后我们创建一个空字符串
str2。 - 我们使用
for循环从str1的最后一个索引(8)开始,逐个将字符添加到str2,直到索引为 0。
回文检测
回文是指正读和反读都相同的字符序列。编写一个程序,判断一个字符串是否为回文。字符串长度限制为五个字符。
示例输入 1
1"level"
示例输出 1
1Palindrome
示例输入 2
1"leve"
示例输出 2
1Not Palindrome
1class Test 2{ 3 static void Main() 4 { 5 string str = "level"; 6 // 请在此处编写代码 7 } 8}
你可以在上方的代码编辑器中运行以下代码:
1class Test 2{ 3 static void Main() 4 { 5 string str = "level"; 6 if (str[0] == str[4] && str[1] == str[3]) 7 { 8 System.Console.WriteLine("Palindrome"); 9 } 10 else 11 { 12 System.Console.WriteLine("Not Palindrome"); 13 } 14 } 15}
在上述代码中:
- 我们使用变量
str存储文本 "level"。 - 我们比较字符串的第一个字符与最后一个字符,再比较第二个字符与倒数第二个字符,作为条件表达式。
- 如果条件为真,则输出 "Palindrome",否则输出 "Not Palindrome"。