当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在字符串中重复一次字符n次?》经验,为你挑选了3个好方法。

我正在学习Perl,所以请耐心等待我这个noob问题.

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

我想做类似下面的事情:

$numOfChar = 10;

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

kixx.. 25

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

$numOfChar = 10;

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

这将为$numOfChar文本的开头添加空间.要对文本中的每一行执行此操作,请使用-p标志(用于快速,单行处理):

cat foo.txt | perl -p -e "$n = 10; s/^(.*)/' ' x $n . $1/e/" > bar.txt

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

$n = 10;
$text =~ s/^(.*)/' ' x $n . $1/mge;


小智.. 15

您的正则表达式可以写成:

$numOfChar = 10;

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

但是 - 你可以这样做:

s/^/' ' x $numOfChar/e;

或者根本不使用正则表达式:

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


Chris Lutz.. 8

你是对的.Perl的x运算符多次重复一个字符串.

print "test\n" x 10; # prints 10 lines of "test"

编辑:要在正则表达式中执行此操作,将值分配给另一个变量可能是最好的(也称为最友好的维护者).

my $spaces = " " x 10;
s/^\s*(.*)/$spaces$1/;

有一些方法可以在没有额外变量的情况下完成,但只需要0.02美元,如果你这样做就会更容易维护.

编辑:我修复了我的正则表达式.对不起我第一次没看对.



1> kixx..:

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

$numOfChar = 10;

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

这将为$numOfChar文本的开头添加空间.要对文本中的每一行执行此操作,请使用-p标志(用于快速,单行处理):

cat foo.txt | perl -p -e "$n = 10; s/^(.*)/' ' x $n . $1/e/" > bar.txt

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

$n = 10;
$text =~ s/^(.*)/' ' x $n . $1/mge;



2> 小智..:

您的正则表达式可以写成:

$numOfChar = 10;

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

但是 - 你可以这样做:

s/^/' ' x $numOfChar/e;

或者根本不使用正则表达式:

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



3> Chris Lutz..:

你是对的.Perl的x运算符多次重复一个字符串.

print "test\n" x 10; # prints 10 lines of "test"

编辑:要在正则表达式中执行此操作,将值分配给另一个变量可能是最好的(也称为最友好的维护者).

my $spaces = " " x 10;
s/^\s*(.*)/$spaces$1/;

有一些方法可以在没有额外变量的情况下完成,但只需要0.02美元,如果你这样做就会更容易维护.

编辑:我修复了我的正则表达式.对不起我第一次没看对.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有