我需要将一个文本放在另一个文本中。
1)我有一个包含输入值列表的文件:
A1
B2
C3
D4
E5
- 我有一个应该包含文本的包装模式:
$wgSpecialPageLockdown['INPUT_COMES_HERE'] = array('sysop');
对于每个输入值,应该创建一个带有输入的包装器,因此最终结果应该是一个包含以下内容的文件:
$wgSpecialPageLockdown['A1'] = array('sysop');
$wgSpecialPageLockdown['B2'] = array('sysop');
$wgSpecialPageLockdown['C3'] = array('sysop');
$wgSpecialPageLockdown['D4'] = array('sysop');
$wgSpecialPageLockdown['E5'] = array('sysop');
我也愿意在 GUI 中执行此操作,例如 Visual Studio Code。
你希望如何做这样的动作?
而且,顺便问一下,这种文本操作通常是如何命名的?
如果您只想用
$wgSpecialPageLockdown['
前后包装每一行'] = array('sysop');
,请尝试:我称之为“包装”,但我不确定它是否有标准名称。
一种方法可以是:
您可以使用
awk
:鉴于您正在使用 VS Code 并且对 GUI 选项开放,我想我会发布这样的选项以防万一它有用。
您可以使用 VS Code 支持的多行编辑功能来完成此操作:
(注意:对我来说,它是通过Alt+click/drag 激活的。您的可能设置为Ctrl+click/drag,这是在 Selection->Switch to Ctrl/Alt click for multi-cursor 下配置的)。
本质上,您可以复制字符串的第一部分,Alt+ 向下拖动以选择多行数据,然后在开头粘贴。重复字符串的结尾。这也可以通过按End将所有光标移动到行尾来处理不同长度的数据
输出
在 PHP 中,它们只是被称为数组,但在其他语言中,它们通常也被称为“哈希表”、“哈希映射”、“表”、“映射”、“关联数组”等,带有映射和键。
所以你可以有:
当然,您可以从任何来源获取 $key,例如从文本文件或其他参数中读取。
在内部执行此操作
vi
或vim
:如果您
insert mode
通过点击退出ESC
然后点击:
并粘贴上面的内容(没有前导:
)。您甚至可以将替代项应用于选定的行范围。
例如:仅适用于前两行:
框架挑战
这是您尝试生成的 PHP 代码。不。只写一个循环。一个简单的形式可能是:
一个更容易使用的表格可能是:
如果您需要多行名称,则可以使用以下内容:
使用Raku(以前称为 Perl_6)
或者
样本输入:
样本输出:
以上是用 Raku 编码的答案,Raku 是 Perl 编程语言家族的成员。每个答案都使用一个命令行标志:第一个答案使用自动打印的逐行标志
-pe
,而第二个答案使用-ne
非自动打印的逐行标志,并带有一个put
用于打印输出的前导命令。两个答案都利用了 Raku 允许用户定义分隔符的事实:两个答案都使用{…}
大括号分隔符。在上面的第一个答案中,
s///
使用了熟悉的成语,并在 Raku 中提供了一种新形式:(s{…}={…}
或s[…]=[…]
,或s「…」=「…」
,等)。这种新形式允许程序员通过 Raku 的“Q-Language”(即引用构造符号)来确定引用/插值。该qq
方法指示 Raku 插入变量和反斜杠字符。每一行都在s{…}=qq{…}
操作符的左半部分使用(.*)
并存储在$0
变量中。然后在运算符的右半部分用附加文本包装(前置/附加)输出s{…}=qq{…}
,并自动打印。$
、@
、%
和&
。在qq
运算符内部,这些文字字符需要进行反斜杠转义,否则 Raku 将尝试对它们进行插值。数组 sigil是个例外:因为不需要转义@
文字字符(对电子邮件地址很方便),但是在打印实际变量时,您在末尾添加空索引方括号以强制插值,如下所示:.@
@array1
@array1[]
上面的第二个答案更简单。基本上每一行都被读取,
.map
插入,并在(“prepend”)和之后(“append”)之后用文本包裹。在 Raku 中,字符串连接是用~
波浪号完成的,映射的输入由*
“whatever star”表示。使用“whatever star”代替在curly_brace 表示的代码块*
中使用$_
主题变量。{…}
如其他答案中
\x27
所述,单引号字符的十六进制表示可以在 Raku 中使用,如上或\x[27]
. 但是,如果您厌倦了记住十六进制代码,只需拼出要插入的字符,如下所示\c[APOSTROPHE]
:(或\c[QUOTATION]
,或任何您难以插入的字符)。这些答案如下所示:或者
附录:我有没有提到双引号是
qq
引用的语法糖?因此,虽然上述答案对我们的 Windows 朋友很有效,但下面的双引号也适用于适当的(Linux、Mac)系统:或者
https://docs.raku.org/language/quoting
https://raku.org