Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何在字符串中重复一个字符n次?_Perl - Fatal编程技术网

Perl 如何在字符串中重复一个字符n次?

Perl 如何在字符串中重复一个字符n次?,perl,Perl,我正在学习Perl,所以请容忍我的这个noob问题 如何在字符串中重复一个字符n次 我想做如下事情: $numOfChar = 10; s/^\s*(.*)/' ' x $numOfChar$1/; 你说得对。Perl的x运算符将字符串重复多次 print "test\n" x 10; # prints 10 lines of "test" 编辑:要在正则表达式中执行此操作,最好(也称为对维护人员最友好的)将值赋给另一个变量 my $spaces = " " x 10; s/^\s*(.*

我正在学习Perl,所以请容忍我的这个noob问题

如何在字符串中重复一个字符n次

我想做如下事情:

$numOfChar = 10;

s/^\s*(.*)/' ' x $numOfChar$1/;

你说得对。Perl的
x
运算符将字符串重复多次

print "test\n" x 10; # prints 10 lines of "test"
编辑:要在正则表达式中执行此操作,最好(也称为对维护人员最友好的)将值赋给另一个变量

my $spaces = " " x 10;
s/^\s*(.*)/$spaces$1/;
有很多方法不需要额外的变量就可以做到这一点,但是如果这样做的话,我的$0.02就更容易维护了


编辑:我修正了我的正则表达式。很抱歉,我第一次读错了。您的正则表达式可以写成:

$numOfChar = 10;

s/^(.*)/(' ' x $numOfChar).$1/e;
但是,您可以通过以下方式实现:

s/^/' ' x $numOfChar/e;
或者根本不使用regexp:

$_ = ( ' ' x $numOfChar ) . $_;

默认情况下,替换将字符串作为要替换的部分。要在替换过程中执行代码,必须使用
e
标志

$numOfChar = 10;

s/^(.*)/' ' x $numOfChar . $1/e;
这将在文本开头添加
$numochar
空格。要对文本中的每一行执行此操作,请使用
-p
标志(用于快速、单行处理):

或者,如果它是较大脚本的一部分,则使用
-g
-m
标志(
-g
表示全局,即重复替换和
-m
使
^
在每行开头匹配):


那没用。我想它只在打印语句中起作用。我正在尝试类似的东西。s/^(.*)/‘p’x$numochar/;我已经修改了我的问题。您是否收到任何错误消息?请注意,此答案不再适用,因为chappar在给出此答案后在其问题中添加了一个“\s*”。目前,没有一个答案真正适用。但它很容易修复。只需更改:s/^/''x$numochar/e;放入:s/^\s*/''x$numochar/e;
cat foo.txt | perl -p -e "$n = 10; s/^(.*)/' ' x $n . $1/e/" > bar.txt
$n = 10;
$text =~ s/^(.*)/' ' x $n . $1/mge;