Per coloro che hanno questo problema e sono alla ricerca di un 'risolvere tutti' la soluzione ... è così che ho finalmente riparato:
public static string RemoveTroublesomeCharacters(string inString)
{
if (inString == null)
{
return null;
}
else
{
char ch;
Regex regex = new Regex(@"[^\u0000-\u007F]", RegexOptions.IgnoreCase);
Match charMatch = regex.Match(inString);
for (int i = 0; i < inString.Length; i++)
{
ch = inString[i];
if (char.IsControl(ch))
{
string matchedChar = ch.ToString();
inString = inString.Replace(matchedChar, string.Empty);
}
}
while (charMatch.Success)
{
string matchedChar = charMatch.ToString();
inString = inString.Replace(matchedChar, string.Empty);
charMatch = charMatch.NextMatch();
}
}
return inString;
}
ti rompo giù un poco particolare per quelli meno esperti:
Noi primo ciclo attraverso ogni carattere della stringa e utilizzare il metodo IsControl di char per determinare se un carattere è un carattere di controllo o meno.
Se viene trovato un carattere di controllo, copiare il carattere corrispondente in una stringa, quindi utilizzare il metodo Sostituisci per modificare il carattere di controllo in una stringa vuota. Risciacquare e ripetere per il resto della stringa.
Una volta eseguita l'intera stringa, utilizziamo la regex definita (che corrisponde a qualsiasi carattere che non sia un carattere di controllo o un carattere standard ASCII) e sostituisca nuovamente il carattere con una stringa vuota. Fare questo in un ciclo while significa che per tutto il tempo che charMatch è vero il carattere verrà sostituito.
Infine, una volta rimossi tutti i caratteri e riavvolto l'intera stringa, viene eseguita l'inString.
(Nota: non ho ancora ancora riuscito a capire come ripopolare TextBox con il nuovo valore inString modificato, quindi se qualcuno può indicare come può essere fatto che sarebbe grande)
fonte
2014-07-12 10:47:55
La proprietà 'match' dovrebbe essere chiamata così:' isNonAscii.match ($ (this) .val()) '. Il programma non sa magicamente che vuoi abbinare il valore dell'input alla regex. – SeinopSys
Grazie per l'input. Ha senso, ma come rimuovo il carattere non valido che viene rilevato dalla stringa nella casella di testo? –
Ho deciso di cambiare il mio approccio a questo e andare per una soluzione lato server (dal momento che javascript può a volte essere disattivato nel browser dei client) –