Como removo todos os caracteres não alfanuméricos de uma string, exceto caracteres de traço e espaço?
606
Substitua [^a-zA-Z0-9 -]
por uma string vazia.
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
str = rgx.Replace(str, "");
-
deve estar no final da classe de personagem ou ter escapado com uma barra invertida, para evitar ser usado para um intervalo.replaceAll
função em vez dereplace
.return Regex.Replace(str, "[^a-zA-Z0-9_.]+", "", RegexOptions.Compiled);
Mesma pergunta básica""
estring.Empty
exatamente o mesmo. stackoverflow.com/questions/151472/…Eu poderia ter usado o RegEx, eles podem fornecer uma solução elegante, mas podem causar problemas de desempenho. Aqui está uma solução
Ao usar a estrutura compacta (que não possui FindAll)
Substitua FindAll por 1
1 comentário por ShawnFeatherly
fonte
char[] arr = str.Where(c => (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c) || c == '-')).ToArray();
Podes tentar:
Onde
s
está sua corda?fonte
Usando System.Linq
fonte
O regex é
[^\w\s\-]*
:\s
é melhor usar em vez de space (), porque pode haver uma guia no texto.
fonte
Com base na resposta para essa pergunta, criei uma classe estática e as adicionei. Achei que poderia ser útil para algumas pessoas.
Em seguida, os métodos podem ser usados como:
fonte
Quer algo rápido?
Isso permitirá que você especifique quais caracteres você deseja permitir também.
fonte
Aqui está uma solução rápida amigável para alocação de heap não-regex que era o que eu estava procurando.
Edição insegura.
E para aqueles que não querem usar inseguros ou não confiam no corte do comprimento da string.
fonte
Fiz uma solução diferente, eliminando os caracteres de controle , que era o meu problema original.
É melhor do que colocar em uma lista todos os caracteres "especiais, mas bons"
é mais simples, então eu acho que é melhor!
fonte
Aqui está um método de extensão usando a resposta @ata como inspiração.
ou se você precisar de caracteres adicionais que não sejam hífen ...
fonte
Eu uso uma variação de uma das respostas aqui. Eu quero substituir espaços por "-" para que seja SEO amigável e também faça letras minúsculas. Também não faça referência a system.web da minha camada de serviços.
fonte
Aqui está uma versão muito concisa
fonte
Existe uma maneira muito mais fácil com o Regex.
fonte