Eu preciso colocar um texto dentro de outro texto.
1) Tenho um arquivo com lista de valores de entrada:
A1
B2
C3
D4
E5
- Eu tenho um padrão de wrapper que deve conter o texto:
$wgSpecialPageLockdown['INPUT_COMES_HERE'] = array('sysop');
Para cada valor de entrada, deve ser criado um wrapper com entrada , portanto, o resultado final deve ser um arquivo com:
$wgSpecialPageLockdown['A1'] = array('sysop');
$wgSpecialPageLockdown['B2'] = array('sysop');
$wgSpecialPageLockdown['C3'] = array('sysop');
$wgSpecialPageLockdown['D4'] = array('sysop');
$wgSpecialPageLockdown['E5'] = array('sysop');
Estou aberto para fazer isso na GUI também, como o Visual Studio Code.
Como você prefere fazer tal ação?
E, a propósito, como é comumente nomeada tal operação textual?
Se você quiser apenas envolver cada linha com
$wgSpecialPageLockdown['
antes e'] = array('sysop');
depois, tente:Eu chamaria isso de "embrulho", mas não tenho certeza se há um nome padrão para isso.
Uma forma pode ser:
Você pode usar
awk
:Dado que você está usando o VS Code e está aberto a uma opção de GUI, imaginei que postaria essa opção caso fosse útil.
Você pode fazer isso usando o recurso de edição de várias linhas que o VS Code suporta:
(nota: para mim ele é ativado com Alt+clique/arrastar. É possível que o seu esteja configurado para Ctrl+clique/arrastar, isso é configurado em Seleção->Alternar para Ctrl/Alt clique para multi-cursor).
Essencialmente, você pode copiar a primeira parte de sua string, Alt+ arrastar para baixo para selecionar várias linhas de dados e colar no início. Repita com a ponta da corda. Isso pode ser feito também em dados de diferentes comprimentos pressionando Endpara mover todos os cursores para o final da linha
resultado
Em PHP, eles são chamados apenas de arrays, mas também costumam ter nomes como "tabela de hash", "mapa de hash", "tabela", "mapa", "arrays associativos", etc. em outras linguagens com mapas e chaves.
Então você poderia ter:
Claro que você pode obter $key de qualquer fonte, como ler um arquivo de texto ou outros parâmetros.
Faça isso dentro
vi
ouvim
:se você estiver na
insert mode
saída pressionandoESC
, pressione:
e cole o acima (sem o início:
).Você pode até mesmo aplicar as substituições a um intervalo de linha selecionado.
Ex: para aplicar apenas nas duas primeiras linhas:
Desafio do quadro
Este é o código PHP que você está tentando gerar. Não. Basta escrever um loop. Um formulário simples pode ser:
Um formulário mais fácil de usar pode ser:
Se você precisar de várias linhas de nomes, poderá usar algo como:
Usando Raku (anteriormente conhecido como Perl_6)
OU
Entrada de amostra:
Saída de amostra:
Acima estão as respostas codificadas em Raku, um membro da família Perl de linguagens de programação. Cada resposta usa um sinalizador de linha de comando: a primeira resposta usa o
-pe
sinalizador de linha de impressão automática, enquanto a segunda resposta usa o-ne
sinalizador de linha de impressão não automática, com umput
comando inicial para imprimir a saída. Ambas as respostas aproveitam o fato de que o Raku permite delimitadores definidos pelo usuário: ambas as respostas usam{…}
delimitadores de chaves.Na primeira resposta acima, o
s///
idioma familiar é usado, com uma nova forma fornecida no Raku:s{…}={…}
(ous[…]=[…]
, ous「…」=「…」
, etc.). Esta nova forma permite ao programador determinar a citação/interpolação através da "Q-Language" do Raku (ou seja, notação de construção de citação). Oqq
método instrui o Raku a interpolar variáveis e caracteres com barra invertida. Cada linha é capturada na metade esquerda dos{…}=qq{…}
operador usando(.*)
e armazenada na$0
variável. A saída é então agrupada (anexada/anexada) com texto adicional na metade direita dos{…}=qq{…}
operador e impressa automaticamente.$
,@
,%
, e&
. Dentro doqq
operador, esses caracteres literais precisam ser escapados de barra invertida, caso contrário, o Raku tentará interpolá-los. A exceção é o@
sigilo da matriz: como um caractere literal@
não precisa ser escapado (conveniente para endereços de e-mail), mas ao imprimir uma@array1
variável real, você adiciona colchetes de indexação vazios no final para forçar a interpolação, assim:@array1[]
.A segunda resposta acima é ainda mais simples. Basicamente, cada linha é lida,
.map
inserida e envolvida com texto antes ("prepend") e depois ("append"). No Raku, a concatenação de strings é realizada com~
til, e a entrada mapeada é representada por uma*
"estrela qualquer". A*
"qualquer estrela" é usada em vez de usar$_
a variável de tópico dentro de um{…}
bloco de código denotado por curly_brace.Conforme observado em outras respostas,
\x27
a representação hexadecimal de um caractere de aspas simples pode ser usada no Raku, como acima ou como\x[27]
. No entanto, se você se cansar de lembrar de códigos hexadecimais, apenas soletre o caractere que deseja inserir assim:\c[APOSTROPHE]
(ou\c[QUOTATION]
, ou qualquer que seja o caractere difícil de inserir). Veja como são essas respostas:OU
Adendo: Eu mencionei que aspas duplas eram açúcar sintático para
qq
citar? Portanto, embora as respostas acima funcionem bem para nossos amigos do Windows, as aspas duplas abaixo também funcionam em sistemas apropriados (Linux, Mac):OU
https://docs.raku.org/language/quoting
https://raku.org