当前位置: 首页 > 知识库问答 >
问题:

在raku中串联's//`

韶景曜
2023-03-14

我发现,对于脚本编写成瘾者来说,加入raku的一个巨大卖点就是拥有这样的结构

my $w = "Hello world";

$w
  ~~ s/Hello/Hola/
  ~~ s/world/mundo/
  ;

say $w; # » Hola world

然而,我似乎不能写这样的东西。据我所知,使用<代码>执行此操作。substStr的方法太难看了,这种链式的s///code>或者甚至也tr///code>基本上会成为sed用户等的门户药物。

我的问题是,我是否遗漏了什么,在拉库是否有可能发生类似的事情。我不是初学者,我想不出来。

共有2个答案

齐英耀
2023-03-14

到目前为止,一些优秀的答案(包括评论)。

在进行多次(连续)替换时,利用Raku的非破坏性S//运算符通常很有用。在Raku REPL中:

> my $w = "Hello world";
Hello world
> given $w {S/Hello/Hola/ andthen S/world/mundo/};
Hola mundo
> say $w;
Hello world

一旦您对代码感到满意,您可以将结果分配给一个新变量:

> my $a = do given $w {S/Hello/Hola/ andthen S/world/mundo/};
Hola mundo
> say $a
Hola mundo

进一步考虑这个想法,我编写了以下“baby Raku”翻译脚本,并将其保存为Bello\u Gallico。p6。跑步很有趣!

my $caesar = "Gallia est omnis divisa in partes tres";
my $trans1 = do given $caesar {
 S/Gallia/Gaul/ andthen
 S/est/is/ andthen
 S/omnis/a_whole/ andthen
 S/divisa/divided/ andthen
 S/in/into/ andthen
 S/partes/parts/ andthen
 S/tres/three/ 
};
put $caesar;
put $trans1;

HTH。

https://docs.raku.org/language/regexes#S///_non-destructive_substitution

穆歌者
2023-03-14

您可以将与或给定

with $w {
    s/Hello/Hola/;
    s/world/mundo/;
}

然后

$w andthen  s/Hello/Hola/ && s/world/mundo/;

或者这个丑陋的建筑

$_ := $w;
s/Hello/Hola/;
s/world/mundo/;
 类似资料:
  • 我在寻找一个更简单的解决方案。 我有一个带相应后缀的前缀列表和一个根列表。 我想说出所有可能的“单词”:《代码》A1a、《代码》B1b<代码>A2a<代码>E2e。 我想使用zip或cross之类的东西可以更容易地完成这项工作,但我不知道如何。。。

  • 问题内容: 为什么下面的工作?我希望会被抛出。 问题答案: 为什么必须起作用? 在JLS 5,第15.18.1.1节 JLS 8§15.18.1 “字符串连接运算符+” ,导致JLS 8,§5.1.11 “字符串转换”,要求该操作无故障成功: …现在只需要考虑参考值。如果引用为null,则将其转换为字符串“ null”(四个ASCII字符n,u,l,l)。否则,转换的执行就好像是通过调用不带参数的

  • 问题内容: 这里的正确语法是什么? 我试过了: 问题答案: 您可以在中将其用作字符串替换参数:

  • 问题内容: 我有一个pyspark数据框为 并且需要按行连接患者姓名,以便获得如下输出: 有人可以帮我有关在pyspark中创建此数据框吗? 提前致谢。 问题答案: 我能想到的最简单的方法是使用

  • 我想使用PowerShell生成命令列表,将文件从一个位置移动到另一个位置。(我确信PowerSell确实可以移动,但我想先看看命令列表……是的,我知道)。 文件位于下一层的一系列子文件夹中,需要移动到另一台主机上相应的一系列子文件夹中。子文件夹具有8位标识符。我需要一系列命令,比如 该文件需要进入相应的8位标识符文件夹的\导入子目录。 下面的PowerShell将生成我需要的数据 但我一直在研究

  • 在Perl中,使用Moo,可以围绕sub实现sub,它将围绕类中的其他方法。 如何在Raku中实现这种行为,最好使用角色?