计算机编程 - 字符串


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

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

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

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

#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变量的内存地址的开头,如下所示 -

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