Substituir novas linhas por um delimitador de vírgula pelo Notepad ++?


165

Eu tenho uma pergunta do Notepad ++.

Como posso usar as palavras abaixo no Notepad ++ (que está em linhas diferentes)

Apples
Apricots
Pear
Avocados
Bananas

E transformá-los em um parágrafo com uma vírgula no final de cada um? Como isso:

Apples, Apricots, Pear, Avocados, Bananas

Respostas:


324

Abra a caixa de diálogo Localizar e substituir (pressione CTRL+ H).

Em seguida, selecione Regular expressionna seção 'Modo de pesquisa' na parte inferior.

No Find whatcampo, digite este:[\r\n]+

No Replace with:

Há um espaço após a vírgula.

Isso também substituirá linhas como

Apples

Apricots
Pear

Avocados
Bananas

Onde existem linhas vazias.

Se suas linhas tiverem espaços em branco à direita, remova-os primeiro. A maneira mais simples de conseguir isso é

EDIT -> Blank Operations -> Trim Trailing Space

OU

TextFX -> TextFX Edit -> Trim trailing spaces

Certifique-se de definir o modo de pesquisa como "Expressão regular".


Se houver espaços à direita na linha, você pode _*[\r\n]+. Para lidar com as linhas em branco transformadas em vírgulas em excesso, você pode fazer uma expressão regular procurar ,_[,_]+e substituir por ,_. Como alternativa, o pacote TextFx possui um comando delete blanks lines que pode ser usado antes de adicionar vírgulas. (Nota sublinhados mudança para espaços nestes blocos de código.)
AdrianHHH

Sim, você está muito correto. Eu só estava tentando dar uma resposta minimalista. Talvez eu deva editar a resposta então.

2
Isso não funciona para mim: vejo "0 ocorrências foram substituídas".
Iain Samuel McLean Elder

3
@IainElder, o Modo de pesquisa deve ser definido como "Expressão regular" em vez de "Normal" ou "Estendido".
Scott Lawrence

Eu tive o mesmo resultado que Iain.
Dhochee

34

Aqui está o que funcionou para mim com uma lista semelhante de seqüências de caracteres no Notepad ++ sem macros ou qualquer outra coisa:

  1. Clique em Editar -> Operações em branco -> EOL para espaçar [Todos os itens agora devem estar em uma única linha separada por um 'espaço']

  2. Selecione qualquer 'espaço' e faça Substituir Tudo (por ',')


Simples e elegante, agradável
reggaeguitar

@trishul Realmente agradável.
precisa

32

A resposta de fapDaddy usando uma macro me apontou na direção certa.

Aqui está exatamente o que funcionou para mim.

  1. Coloque o cursor após o primeiro item de dados. insira a descrição da imagem aqui

  2. Clique em 'Macro> Iniciar gravação' no menu. insira a descrição da imagem aqui

  3. Digite esta seqüência: Comma, Space, Delete, End.insira a descrição da imagem aqui

  4. Clique em 'Macro> Parar gravação' no menu. insira a descrição da imagem aqui

  5. Clique em 'Macro> Executar uma macro várias vezes ...' no menu. insira a descrição da imagem aqui

  6. Clique em 'Executar até o final do arquivo' e clique em 'Executar'. insira a descrição da imagem aqui

  7. Remova os caracteres finais. insira a descrição da imagem aqui

  8. Feito!

insira a descrição da imagem aqui


5
Este método é lento para milhares de itens de dados.
Iain Samuel McLean Elder

Ótima resposta. Obrigado :)
Peter T.

Uma informação tão boa será útil em muitas situações semelhantes. Obrigado!
Moin

Obrigado por compartilhar as informações. É interessante.
ironman

4

Para o Notepad ++ 5.9

  1. Pressione Ctrl + H
  2. Selecione o modo Pesquisa estendido (\ n, \ r, \ t, \ o, \ x ...)
  3. Digite Localizar o que: \ r \ n
  4. Digite Substituir por: ,
  5. Replace_All deve obter o resultado necessário.

3
Esta resposta repete a resposta aceita e refere-se a uma versão antiga do Notepad ++, versão 7.4.x agora está disponível. Bem-vindo ao Stack Overflow, mas as respostas devem fornecer novas informações ou fornecer novos insights. Repetir respostas existentes não é útil.
AdrianHHH 12/06

Para versões mais recentes do npp, este é o melhor caminho para isso.
Nurdyguy 18/07/19

Essa é a resposta mais fácil. Eu não deveria ter que entrar no modo Expressão Regular apenas para substituir novas linhas por vírgulas. O N ++ realmente funciona corretamente, enquanto outros editores interpretam "\ n" como retorno de carro E avanço de linha, o que me confundiu a princípio.
BrianVPS

3

Posicione o cursor após Maçãs , na guia Macro , selecione Iniciar gravação . Digite o caractere de vírgula ( , ), espaço () e pressione a tecla Encerrar , na guia Macro, selecione Parar gravação .

Ctrl + Shift + P para reprodução única.


Obrigado por essa dica. E se eu tiver 5000 palavras + +? Preciso executar a macro para todos eles individualmente? Existe um método mais fácil?
precisa saber é o seguinte

Se você precisar executar uma tarefa semelhante no futuro, escreva um script para ela. A saída mais fácil é provavelmente apenas ir para a guia Macro e selecionar executar a macro várias vezes. Isso será feito em segundos.
Viclim

+1 Sua resposta me apontou na direção certa. Na minha resposta , documentei exatamente o que funcionou para mim.
Iain Samuel McLean Elder

2

Pode parecer estranho, mas você pode remover a próxima linha, copiando o texto inteiro e colando-o na barra de pesquisa do firefox e, em seguida, colando-o novamente no bloco de notas ++

passo 1

passo 2


1
Por favor, melhore esta resposta. Links para imagens não serão úteis.
Drew

2

USE a barra de pesquisa do Chrome

1 pressione CTRL F
2 cole o texto copiado na barra de pesquisa
3 pressione CTRL Aseguido por CTRL Cpara copiar o texto novamente da pesquisa
4 cole no Notepad ++
5 e substitua 'space'por','

1 clique para a imagem
2 cliques para a imagem


0

Você pode usar a linha cc.rnl ', 'de comando do ConyEdit (um plug-in) para substituir novas linhas pelo conteúdo desejado.


0

Uma correspondência regex com \s+funcionou para mim:

insira a descrição da imagem aqui


BTW: parece-me que uma correspondência de regex com $^deve funcionar, mas, em vez disso, corresponde ^$.
user3673

Usar a opção "Estendida" logo acima da opção "Expressão regular" (na captura de tela) é realmente a maneira mais fácil de conseguir isso.
Nurdyguy 18/07/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.