gpt4 book ai didi

perl - 如何在 Perl 中将文本插入字符串中?

转载 作者:行者123 更新时间:2023-12-03 18:21:31 26 4
gpt4 key购买 nike

如果我有:

$foo= "12."bar bar bar"|three";

我将如何在变量中的文本 12. 之后插入文本“..”?

最佳答案

Perl 允许您选择自己的报价分隔符。如果您发现需要在插值字符串中使用双引号(即 "" )或在非插值字符串中使用单引号(即 '' ),您可以使用 quote operator指定一个不同的字符作为字符串的分隔符。分隔符有两种形式:有括号和无括号。带括号的分隔符具有不同的开始和结束字符:[] , {} , () , [] , 和 <> .所有其他字符 *可用作不带括号的分隔符。

所以你的例子可以写成

$foo = qq(12."bar bar bar"|three);

在“12”之后插入文本。可以通过多种方式完成( TIMTOWDI )。一个常见的解决方案是使用 substitution以匹配要替换的文本。
$foo =~ s/^(12[.])/$1../;

^ 表示匹配开始处, ()表示将此文本捕获到变量 $1 , 12只匹配字符串 "12" ,以及 []意思是匹配括号内的任何一个字符。使用方括号是因为 .通常在正则表达式中具有特殊含义,但在字符类( [] )中没有。字符类的另一个选项是转义 . 的特殊含义。与 \ ,但很多人发现它比字符类更丑陋。
$foo =~ s/^(12\.)/$1../;

另一种将文本插入字符串的方法是将值分配给对 substr 的调用。 .这突出了 Perl 相当独特的特性之一:它的许多函数可以充当左值。也就是说,它们可以被视为变量。
substr($foo, 3, 0) = "..";

如果您还不知道在哪里 "12."存在于您可以使用的字符串中 index 找到它的开始位置, length 找出“12”有多长。是,然后通过 substr 使用该信息.

这是一个包含上述代码的全功能 Perl 脚本。
#!/usr/bin/perl

use strict;
use warnings;

my $foo = my $bar = qq(12."bar bar bar"|three);

$foo =~ s/(12[.])/$1../;

my $i = index($bar, "12.") + length "12.";
substr($bar, $i, 0) = "..";

print "foo is $foo\nbar is $bar\n";
*除空白字符(空格、制表符、回车、换行、垂直制表符和换页符)之外的所有字符

关于perl - 如何在 Perl 中将文本插入字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com