Risposte:
Questo taglierà qualsiasi combinazione di ritorni a capo e di nuova riga dalla fine di s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Modifica : o come fa notare gentilmente JP, puoi scriverlo in modo più succinto come:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
, come dicono i documenti: se trimChars è null o un array vuoto, i caratteri di spazio vuoto Unicode vengono invece rimossi. - vedi String.TrimEnd
'\r'
e '\n'
e nient'altro, non il carattere di spazio ' '
, per esempio.
Se utilizzi più piattaforme, sei più sicuro utilizzando questo metodo.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
Considererà diversi caratteri di ritorno a capo e ritorno a capo.
tst.TrimEnd( '\r', '\n' )
- è ragionevolmente "sicuro" in pratica poiché i principali EOL sono [attualmente] solo diverse combo di \r
e \n
, ma quella di alexw è la risposta "giusta". Lascia che il CLR ti dica cosa sono i caratteri nella nuova riga di questa piattaforma. EOL non è sempre stata una combinazione di 0D e 0A
Environment.NewLine
ma non sembrava gestire i casi in cui \r
era presente senza \n
. TrimEnd('r','\n')
sembra essere più affidabile in questo caso.
String temp = s.Replace("\r\n","").Trim();
s
essendo la stringa originale. (Note maiuscole)
replace()
quindi trim()
non è eccessivo quando TrimEnd()
posso fare il lavoro da solo o mi manca qualcosa?
s.TrimEnd();
Quanto sopra è tutto ciò di cui avevo bisogno per rimuovere '\ r \ n' dalla fine della mia stringa.
La risposta votata a favore mi sembra sbagliata. In primo luogo, non ha funzionato quando ho provato, in secondo luogo, se non lavoro mi aspetterei che s.TrimEnd ( '\ r', '\ n') eliminerebbe solo sia un '\ r' o un '\ n' , quindi dovrei eseguirlo sulla mia stringa due volte: una per quando "\ n" era alla fine e la seconda volta per quando "\ r" era alla fine (ora che "\ n" è stato rimosso) .
Se c'è sempre un singolo CRLF, allora:
myString = myString.Substring(0, myString.Length - 2);
Se può o non può averlo, allora:
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
Entrambi (in base alla progettazione) rimuoveranno al massimo un singolo CRLF. Memorizza nella cache la regex per le prestazioni.
Era troppo facile: per me sto filtrando determinati elementi di posta elettronica. Sto scrivendo il mio filtro per la posta indesiderata personalizzato. Con \ r e / o \ n nella stringa, cancellava tutti gli elementi invece di filtrare.
Quindi, ho appena fatto filter = filter.Remove ('\ n') e filter = filter.Remove ('\ r'). Sto creando il mio filtro in modo tale che un utente finale possa utilizzare il Blocco note per modificare direttamente il file, quindi non è possibile sapere dove questi caratteri potrebbero incorporarsi, potrebbero essere diversi dall'inizio o dalla fine della stringa. Quindi rimuoverli tutti lo fa.
Le altre voci funzionano tutte ma Rimuovi potrebbe essere la più semplice?
Ho imparato un po 'di più su Regex da questo post: un lavoro piuttosto interessante con il suo utilizzo qui.
filter = filter.Remove('\n').Remove('\r');
Uso molti livelli di cancellazione
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 ora abbiamo una riga pulita
Questo è quello che devo lavorare per me.
s.Replace("\r","").Replace("\n","")