Respostas:
Isso eliminará qualquer combinação de retornos de carro e novas linhas do final de s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Edit : Ou, como JP gentilmente aponta, você pode soletrar de forma mais sucinta como:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
- como dizem os documentos: Se trimChars for nulo ou uma matriz vazia, os caracteres de espaço em branco Unicode serão removidos. - consulte String.TrimEnd
'\r'
e '\n'
e nada mais, não o caractere de espaço ' '
, por exemplo.
Se você estiver usando várias plataformas, estará mais seguro usando este método.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
Ele levará em conta diferentes caracteres de nova linha e de retorno de carro.
tst.TrimEnd( '\r', '\n' )
- é razoavelmente "seguro" na prática, visto que os principais EOLs são [atualmente] apenas combinações diferentes de \r
e \n
, mas o de alexw é a resposta "certa". Deixe o CLR dizer quais são os chars na nova linha desta plataforma. EOL nem sempre foi combinações de 0Ds e 0As
Environment.NewLine
mas não parecia lidar com instâncias em que \r
estava presente sem \n
. TrimEnd('r','\n')
parece ser mais confiável neste caso.
String temp = s.Replace("\r\n","").Trim();
s
sendo a string original. (Letras maiúsculas)
replace()
então trim()
não é exagero quando TrimEnd()
posso fazer o trabalho sozinho ou estou perdendo alguma coisa?
s.TrimEnd();
O texto acima é tudo que eu precisava para remover '\ r \ n' do final da minha string.
A resposta votada parece errada para mim. Em primeiro lugar, isso não funcionou quando eu tentei, em segundo lugar, se ele fez um trabalho eu esperaria que s.TrimEnd ( '\ r', '\ n') só iria remover qualquer um '\ r' ou '\ n' , então eu teria que executá-lo em minha string duas vezes - uma para quando '\ n' estava no final e a segunda vez para quando '\ r' estava no final (agora que o '\ n' foi removido) .
Se houver sempre um único CRLF, então:
myString = myString.Substring(0, myString.Length - 2);
Se pode ou não ter, então:
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
Ambos (por design) removerão no máximo um único CRLF. Armazene o regex para desempenho.
Isso foi muito fácil - para mim, estou filtrando alguns itens de e-mail. Estou escrevendo meu próprio filtro de lixo eletrônico personalizado. Com \ r e / ou \ n na string, ele estava apagando todos os itens em vez de filtrar.
Então, acabei de fazer filter = filter.Remove ('\ n') e filter = filter.Remove ('\ r'). Estou fazendo meu filtro de forma que um usuário final possa usar o Bloco de notas para editar diretamente o arquivo, então não há como dizer onde esses caracteres podem se encaixar - podem estar em algo diferente do início ou final da string. Então, removê-los todos resolve.
Todas as outras entradas funcionam, mas Remover pode ser a mais fácil?
Aprendi um pouco mais sobre Regex neste post - um trabalho muito legal com seu uso aqui.
filter = filter.Remove('\n').Remove('\r');
Eu uso muito nível de apagamento
String donen = "lots of stupid whitespaces and new lines and others..."
//Remove multilines
donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
//remove multi whitespaces
RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
donen = regex.Replace(donen, " ");
//remove tabs
char tab = '\u0009';
donen = donen.Replace(tab.ToString(), "");
//remove endoffile newlines
donen = donen.TrimEnd('\r', '\n');
//to be sure erase new lines again from another perspective
donen.Replace(Environment.NewLine, "");
e agora temos uma linha limpa
Isso é o que eu tenho que trabalhar para mim.
s.Replace("\r","").Replace("\n","")