Come individuare e sostituire i caratteri non stampabili in una stringa utilizzando Java?
-
21-09-2019 - |
Domanda
Per esempio ho una stringa come questa: abc123 [*] xyz [#] 098 [~] F9E
[*], [#] e [~] rappresenta 3 diversi caratteri non stampabili. Come posso sostituirli con "X" in Java?
Frank
Soluzione
Non sono sicuro se ho ben capito le vostre domande. Se si riesce a formulare meglio, penso che una semplice sostituzione di espressione regolare può essere tutto ciò che è necessario.
String r = s.replaceAll(REGEX, "X");
REGEX dipende da quello che vi serve:
"\\*|#|~" : matches only '*', "#', and '~'
"[^\\d\\w]" : matches anything that is neither a digit nor a word character
"\\[.\\]" : matches '[' followed by ANY character followed by ']'
"(?<=\\[).(?=\\])" : matches only the character surrounded by '[' and ']'
Altri suggerimenti
Questo SO Q & A mostra un modo per testare, in Java, se un determinato carattere è stampabile.
Come sicuramente sapete, in Java non è possibile modificare direttamente una stringa: piuttosto, si effettua una nuova StringBuilder agli oggetti inizializzato con la stringa, modificare l'oggetto stringa builder (ad esempio con chiamate setCharAt
cui il metodo menzionato sopra mostra il carattere in tale indice non è stampabile ), e, infine, chiamare toString
sull'oggetto stringa builder di fare un nuovo oggetto stringa, che si può tornare dal tuo metodo, o assegnare allo stesso identificatore si sta utilizzando per fare riferimento alla stringa originale, ecc, ecc, a seconda del vostro esatto ha bisogno.