Questo è un modo rapido per farlo, voglio dire.
Non utilizza una funzione regex costosa. Inoltre non utilizza più funzioni di sostituzione che singolarmente hanno eseguito il loop sui dati con diversi controlli, allocazioni e così via.
Quindi la ricerca viene eseguita direttamente in ciclo 1 for. Per il numero di volte che la capacità dell'array dei risultati deve essere aumentata, viene utilizzato anche un loop all'interno della funzione Array.Copy. Questi sono tutti i loop. In alcuni casi, una dimensione di pagina più grande potrebbe essere più efficiente.
public static string NormalizeNewLine(this string val) {
if (string.IsNullOrWhiteSpace(val))
return val;
const int page = 6;
int a = page;
int j = 0;
int len = val.Length;
char[] res = new char[len];
for (int i = 0; i < len; i++) {
char ch = val[i];
if (ch == '\r') {
int ni = i + 1;
if (ni < len && val[ni] == '\n') {
res[j++] = '\r';
res[j++] = '\n';
i++;
} else {
if (a == page) { //ensure capacity
char[] nres = new char[res.Length + page];
Array.Copy(res, 0, nres, 0, res.Length);
res = nres;
a = 0;
}
res[j++] = '\r';
res[j++] = '\n';
a++;
}
}
else if (ch == '\n') {
int ni = i + 1;
if (ni < len && val[ni] == '\r') {
res[j++] = '\r';
res[j++] = '\n';
i++;
} else {
if (a == page) { //ensure capacity
char[] nres = new char[res.Length + page];
Array.Copy(res, 0, nres, 0, res.Length);
res = nres;
a = 0;
}
res[j++] = '\r';
res[j++] = '\n';
a++;
}
} else {
res[j++] = ch;
}
}
return new string(res, 0, j);
}
Ora che "\ n \ r" non è effettivamente utilizzato su piattaforme di base. ma: chi userebbe due tipi di interruzioni di riga in successione per indicare 2 interruzioni di riga? Se vuoi saperlo, devi dare un'occhiata prima di sapere se i \ n e \ r sono entrambi usati separatamente nello stesso documento.
fonte
2017-11-17 11:17:35
Funziona anche per visualizzare testo sconosciuto su una pagina HTML utilizzando l'ultima sostituzione per inserire un tag BR. Server.HtmlEncode (input) .Replace ("\ r \ n", "\ n"). Sostituisci ("\ r", "\ n"). Sostituisci ("\ n", "
"); –
Questa giunzione risolve i problemi con i modelli T4.Continuavo a ottenere dei ritorni folli nel mio output generato. – DaImTo