ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Perl - 字符串 > 原文: [https://beginnersbook.com/2018/03/perl-strings/](https://beginnersbook.com/2018/03/perl-strings/) 字符串是一系列字符。正如我们在标量指南中所讨论的那样,字符串被认为是 Perl 编程语言中的标量变量。有两种方法可以使用`'`(单引号)和`"`(双引号)在 Perl 中定义字符串。 ## 1. Perl 中的字符串声明和初始化 由于字符串是标量,它们的名称以`$`开头。**例如:** ```perl my $website = "BeginnersBook"; my $editor = "Chaitanya"; print "$editor works for $website"; ``` 输出: ```perl Chaitanya works for BeginnersBook ``` ## 2 字符串插值 - 单引号和双引号 我已经在[ Perl 标量的文章](https://beginnersbook.com/2017/05/scalars-in-perl/)中介绍了这个主题。 引号不是字符串的一部分,它们只是指定字符串的开头和结尾。您可能认为**单引号和双引号**都有相同的用途,但事实并非如此。它们用于不同的 2 例。要理解这两者之间的区别,让我们看一下下面的例子。 ```perl #!/usr/bin/perl print "Welcome to\t Beginnersbook.com\n"; print 'Welcome to\t Beginnersbook.com\n'; This would produce the following 输出: Welcome to Beginnersbook.com Welcome to\t Beginnersbook.com\n ``` 您可以清楚地看到双引号内插转义序列`\t`和`\n`的区别,但是单引号没有。 **注意:**我们将在下一个教程中详细讨论转义序列。 **例 2:单引号和双引号:** ```perl #!/usr/bin/perl $website = "Beginnersbook"; print "Website Name: $website\n"; print 'Website Name: $website\n'; ``` **输出:** ```perl Website Name: Beginnersbook Website Name: $website\n ``` 这是双引号的另一个优点,因为它们是**“可变插值”**。这意味着双引号内的变量名称将替换为其值。单引号字符串中不会发生这种情况。 ### 2.1 单引号的使用 您可能正在考虑避免在 perl 程序中使用单引号,但在某些情况下您可能希望使用单引号。 例如如果你想在变量中存储**电子邮件地址**,那么双引号会引发错误,在这种情况下你需要使用单引号。对于例如 ```perl $email = "[email protected]"; # would throw an error $email = '[email protected]'; # would work fine. ``` 这里的问题是`@gmail`被**内插为数组**。以`@`符号开头的变量被内插为数组。我们还可以通过使用`\`转义序列避免双引号错误,我们已在下一节中讨论过。 ### 2.2 Perl 中的反斜杠 反斜杠可以执行以下两个任务之一: 1)它消除了跟随它的字符的特殊含义。对于例如打印`\$myvar`会产生`$myvar`输出而不是变量`myvar`值,因为`$`前面的反斜杠(`\`)消除了`$`的特殊含义 2)它是反斜杠或转义序列的开始。对于例如`\n`是用于换行的转义序列 #### 2.2.1 有什么用? 相信我,你会在 perl 中开发应用时经常使用它。假设您要打印包含双引号的字符串。对于例如如果我想打印:`Hello This is "My blog"`然后我需要使用以下逻辑: ```perl #!/usr/bin/perl $msg = "Hello This is \"My blog\""; print "$msg\n"; ``` **输出:** ```perl Hello This is "My blog" ``` ## 3.字符串操作 让我们看看我们可以对字符串执行的操作。 ### 3.1 连接 要连接字符串,请使用点(`.`)运算符。在下面的例子中,我们连接三个字符串,`$str1`,空格和`$str2`。 ```perl $str1 = "Cherry"; $str2 = "Coco"; $mystr = $str1 . " " . $str2; print "$mystr\n"; ``` 输出: ```perl Cherry Coco ``` ### 3.2 重复 要重复具有指定次数的字符串,请使用字符`x`后跟数字。在下面的示例中,我们使用了字符`x`之后的数字 4,这就是字符串在输出中重复四次的原因。 ```perl $str = "Cherry"; $mystr = $str x 4; print "$mystr\n"; ``` 输出: ```perl CherryCherryCherryCherry ``` ### 3.3 获取子串 - `substr()`函数 `substr()`函数用于从给定字符串中获取子字符串。 ```perl use strict; use warnings; # This is our original string my $str = "I know who you are, I will find you"; print "My original String is: $str\n"; # substring - starting from 8th char till the end of string my $substr1 = substr($str, 7); print "My First substring is: $substr1\n"; # substring - starting from 8th char and length of 11 my $substr2 = substr($str, 7, 11); print "My Second substring is: $substr2\n"; ``` 输出: ```perl My original String is: I know who you are, I will find you My First substring is: who you are, I will find you My Second substring is: who you are ``` 该相同功能可用于用新内容替换字符串的一部分。让我们举个例子来理解这个: ```perl use strict; use warnings; # This is our original string my $str = "I know who you are, I will find you"; print "My original String is: $str\n"; my $newstr = substr($str, 7, 11, "you are the killer"); print "My updated String is: $str\n" ``` 输出: ```perl My original String is: I know who you are, I will find you My updated String is: I know you are the killer, I will find you ``` ### 3.4 在 Perl - `length()`函数中查找字符串的长度 要在 Perl 中查找字符串的长度,请使用`length()`函数。此函数计算字符串中的字符数(包括空格)并返回它。 ```perl use strict; use warnings; my $str = "I know who you are, I will find you"; print "length of my string is:", length($str); ``` 输出: ```perl length of my string is:35 ``` ### 3.5 Perl 中的字符串比较 为了比较两个字符串,我们使用 Perl 中的[`eq`运算符](https://beginnersbook.com/2017/02/perl-operators-complete-guide/)。 ```perl use strict; use warnings; my $str = "hello"; my $str2 = "hello"; if ($str eq $str2){ print "str and str2 are same\n"; } ``` 输出: ```perl str and str2 are same ```