计算机程序设计 - 字符串



在我们关于字符的讨论中,我们了解到字符数据类型处理单个字符,您可以将键盘上的任何字符分配给字符类型变量。

现在,让我们稍微向前迈进,并考虑一种需要在变量中存储多个字符的情况。我们已经看到,C 编程不允许在字符类型变量中存储多个字符。因此,以下语句在 C 编程中无效并产生语法错误:

char ch1 = 'ab';
char ch2 = '10';

我们还了解了如何使用数组的概念在变量中存储多个相同数据类型的值。以下是存储和打印五个整数类型数组中的数字的语法:

#include <stdio.h>

main() {
   int number[5] = {10, 20, 30, 40, 50};
   int i = 0;
        
   while( i < 5 ) {
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
}

当以上代码编译并执行时,会产生以下结果:

number[0] = 10
number[1] = 20
number[2] = 30
number[3] = 40
number[4] = 50

现在,让我们以与数字相同的方式定义一个包含五个字符的数组,并尝试打印它们:

#include <stdio.h>

main() {
   char ch[5] = {'H', 'e', 'l', 'l', 'o'};
   int i = 0;
        
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

这里,我们使用 %c 打印字符值。当以上代码编译并执行时,会产生以下结果:

ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

如果您完成了以上示例,那么我认为您已经了解了字符串在 C 编程中的工作原理,因为C 中的字符串表示为字符数组。C 编程简化了字符串的赋值和打印。让我们再次检查相同的示例,使用简化的语法:

#include <stdio.h>

main() {
   char ch[5] = "Hello";
   int i = 0;
    
   /* Print as a complete string */
   printf("String = %s\n", ch);  

   /* Print character by character */
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

这里,我们使用 %s 使用数组名称ch打印完整的字符串值,它实际上是保存ch变量的内存地址的开头,如下所示:

String Presentation in C/C++

虽然从以上示例中看不到,但 C 程序会在内部将空字符'\0'作为每个字符串的最后一个字符。它指示字符串的结束,这意味着如果您想在数组中存储一个 5 个字符的字符串,那么最好将数组大小定义为 6,尽管 C 不会对此报错。

如果以上代码编译并执行,会产生以下结果:

String = Hello
ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

基本字符串概念

根据以上讨论,我们可以得出以下关于 C 编程语言中字符串的重要结论:

  • C 中的字符串表示为字符数组。

  • 我们可以通过将字符逐个分配到字符数组中来构成 C 编程中的字符串。

  • 我们可以通过将用双引号括起来的完整字符串分配给变量来构成 C 编程中的字符串。

  • 我们可以使用数组下标逐个打印字符串字符,或者使用不带下标的数组名称打印完整字符串。

  • 每个字符串的最后一个字符都是一个空字符,即‘\0’

  • 大多数编程语言提供内置函数来操作字符串,例如,您可以连接字符串、在字符串中搜索、从字符串中提取子字符串等。更多信息,您可以查看我们关于 C 编程或任何其他编程语言的详细教程。

Java 中的字符串

虽然您可以使用字符数组来存储字符串,但 Java 是一种高级编程语言,其设计者试图提供额外的功能。Java 将字符串作为一种内置数据类型,就像任何其他数据类型一样。这意味着您可以直接定义字符串,而不是将它们定义为字符数组。

以下是 Java 中编写的等效程序。Java 使用new运算符创建字符串变量,如下面的程序所示。

您可以尝试执行以下程序以查看输出:

public class DemoJava {
   public static void main(String []args) {
      String str = new String("Hello");  
      System.out.println( "String = " + str );
   }
}

当以上程序执行时,会产生以下结果:

String = Hello

Python 中的字符串

在 Python 中创建字符串就像使用单引号或双引号将字符串分配给 Python 变量一样简单。

下面是一个简单的程序,它创建两个字符串并使用 print() 函数打印它们:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1 = ", var1
print "var2 = ", var2

当以上程序执行时,会产生以下结果:

var1 =  Hello World!
var2 =  Python Programming

Python 不支持字符类型;这些被视为长度为 1 的字符串,因此也被视为子字符串。

要访问子字符串,请使用方括号进行切片以及索引或索引来获取子字符串。请查看以下代码段:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

当以上代码执行时,会产生以下结果:

var1[0]:  H
var2[1:5]:  ytho
广告