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.