Pergunta

Como substituir caracteres especiais usando expressões regulares? Por especial, o que quero dizer é aqueles personagens simbólicos que aparecem às vezes em texto.

Por exemplo, no texto abaixo, eu quero remover a bolha que está no início de cada linha.

Passaporte Detalhes

Name as on passport
Relationship
Passport Number
Date of Issue
Expiry Date
Place of Issue

Pergunta editado:. Desculpe, a bolha no início da linha não é mais visible.After submeter pergunta, Stackoverflow removido esse caráter especial

Alguém sabe como substituir os caracteres especiais? Eu não quero substituir caracteres como #, @ ou!. Estes são trivial e pode ser digitado com o teclado.

Desculpe, eu não sei como colocar esses caracteres especiais na minha question.I vou tentar explicar. No arquivo do Word, colocamos balas antes de texto. Quero substituir caracteres reprenting tais personagens. Eu tenho alguns arquivos de texto que contêm caracteres que se parecem com bolha.

Finalmente, eu encontrei a solução. Esta expressão regular funciona para mim

([^ (A-Za-Z0-9) + | \ r | \ n | \ t | '| "| # |; |:. | / | \ | |, |])

Foi útil?

Solução

Eu não tenho tempo suficiente para detalhar um exemplo completo. Mas desde que você está usando .NET você pode combinar em qualquer número destas classes de personagens:

http://msdn.microsoft.com/en-us/library /20bw873z.aspx

Escolha o que você deseja aceitar e substituir qualquer coisa que não é igual a esse conjunto.

Outras dicas

(Este foi postada antes da linguagem tivesse sido especificado.)

Para substituir caracteres não-ascii com um espaço no Perl,

 $string =~ s/[^[:ascii:]]/ /g;

Consulte http://codepad.org/KTMvQiOz . Aqui o [^[:ascii:]] é um regex que corresponde a qualquer caractere não-ascii.

Seria possível encontrar todos os caracteres "especiais" com esta expressão regular e, em seguida, apenas substituí-los com um caractere de espaço:

/[<special_characters_here>]/

No entanto, geralmente é melhor usar whitelisting, mencionando, assim, todos os caracteres permitidos e substituindo tudo o que não é deles com um carácter de espaço:

/[^<allowed_characters_here>]/

Você quer dizer substituir os caracteres retorno de carro e nova linha?

Se é isso que você está depois, isso iria fazê-lo:

var source = "once\r\ntwice\r\nthrice";
var pattern = new Regex(@"\r\n");
var result = pattern.Replace(source, ",");
Assert.AreEqual("once,twice,thrice", result);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top