Vou apresentar aqui algumas opções para escolher, mas todas elas dependem de expressões regulares. É possível não usar o regex, mas acho que pode envolver um pouco mais de tempo.
[Opção 1 - link
Visite a página link
Definir sabor para "pcre (php)" - é a opção padrão
Expressão regular: (?<=;)(#\d+;#)|(;#\d+$)
Sinalizador: g
Cadeia de teste: Mary One;#123;#Bob Two;#2345;#Charles Three;#445
Substituição: // um espaço (ou pode ser deixado em branco)
Saída: Mary One; Bob Two; Charles Three
A saída precisa ser aparada, pois há um espaço adicional no final.
[Opção 2 - LibreOffice Calc (portátil)]
Calc 'Find & Substituir 'janela permite usar expressões regulares.
Ctrl + H
Localizar: (?<=;)(#\d+;#)|(;#\d+$)
Substituir por: um espaço ou espaço em branco
Na secção "Outras opções", assinale "Expressões regulares"
Clique no botão "Substituir tudo".
[Opção 3 - Notepad ++]
Eu estou mencionando o N ++ aqui, pois é uma ferramenta muito poderosa enquanto se trabalha com muitos tipos de textos. Seu poder fica em grande parte em vários plugins.
Mas aqui vou me referir a uma janela padrão Substituir. Regex permite dividir as partes correspondentes do texto. Isso é chamado de agrupamento. Cada grupo pode ter um nome e esse nome pode ser usado na substituição.
Ctrl + H → Substituir guia
Embrulhe ao redor: verificado
Modo de pesquisa: expressão regular
Encontre o que: (?'name_surname'[^;#]+\s[^;#]+;)(#\d+(;#|$))
Substituir por: $+{name_surname}
Clique no botão "Substituir tudo"
Significado:
"Encontrar o que" encontra tudo - o texto desejado e indesejado.
"Substituir por" substitui o texto bruto por apenas partes desejadas.
[Opção 4 - Excel - função definida pelo usuário (VBA)]
Abra o editor do Visual Basic (Alt + F11)
Adicionar referência:
Ferramentas - > Referências - > Microsoft VBScript Regular Expressions 5.5
Option Explicit
Function leaveNames(CellValue As Variant)
Dim RegEx As RegExp
Dim Expr As String
Set RegEx = New RegExp
Expr = "(#\d+;#)|(;#\d+$)"
RegEx.Global = True
RegEx.IgnoreCase = False
RegEx.MultiLine = False
RegEx.Pattern = Expr
leaveNames = RegEx.Replace(CellValue, "")
End Function
[Resumo]
Eu tentei me focar em soluções bastante rápidas, mas totalmente funcionais, então acho que o sth pode ser tirado disso.