Chcę wiedzieć, jak zamienić ciąg w Javie.Zamień znaki specjalne w ciągu w java
E.g.
String a = "adf�sdf";
Jak wymienić znaki specjalne i jak je unikać?
Chcę wiedzieć, jak zamienić ciąg w Javie.Zamień znaki specjalne w ciągu w java
E.g.
String a = "adf�sdf";
Jak wymienić znaki specjalne i jak je unikać?
Trudno jest odpowiedzieć na to pytanie, nie wiedząc więcej o kontekście.
Generalnie możesz mieć problem z kodowaniem. Zobacz The Absolute Minimum Every Software Developer (...) Must Know About Unicode and Character Sets, aby uzyskać przegląd informacji o kodowaniu znaków.
Możesz użyć sekwencji unikodowych Unicode (takich jak \u201c
[otwarcie kręcone cytat]), aby "unikać" znaków, które nie mogą być bezpośrednio używane w kodowaniu źródłowym (domyślnie kodowanie domyślne dla twojej platformy, ale można to zmienić za pomocą parametru -encoding
na javac
).
Kodowanie pliku źródłowego jest domyślnym kodowaniem domyślnym platformy, tzn. Zwykle nie jest to kodowanie UTF-8. –
@Michael: Dzięki, naprawione. Nie wymyśliłem tego, zastanawiam się, z jakim językiem/środowiskiem faktycznie się wiąże? ;-) A może to było prawdą w 1996 r. Czy coś takiego ... –
Wątpię w to, ponieważ UTF-8 nie został określony przed 1993 r., A Java zamiast tego miała zalecenie używania native2ascii przed dystrybucją kodu źródłowego. Domyślam się jednak, że UTF-8 jest domyślny w niektórych nowszych systemach. –
można pozbyć się wszystkich znaków poza printable ASCII range wykorzystaniem String#replaceAll()
zastępując wzór [^\\x20-\\x7e]
z pustym ciągiem:
a = a.replaceAll("[^\\x20-\\x7e]", "");
Ale to właściwie nie nie rozwiązuje swoją rzeczywistą problem. To więcej obejścia. Z podanych informacji trudno paznokci w dół przyczynę tego problemu, ale czytając jeden z tych artykułów musi pomóc dużo:
Hmm, wydaje się, że istnieje błąd oznaczania (link 2 nie jest poprawnie przetwarzany), ale nie mogę go zlokalizować/naprawić? – BalusC
@BalusC: Zdarza mi się cały czas (ponieważ bardzo często łączę się z dokumentami Java6), chcesz zastąpić spację końcem "% 20". –
@ T.J. tak, to było to, dzięki :) BTW: Firefox zwykle wymyka się z nich przed wklejeniem, ale nie działo się to poprawnie z jakiegoś dziwnego powodu. Ponownie utworzyłem łącze i problem zniknął. – BalusC
Zakładając, że chcesz usuń wszystkie znaki specjalne, możesz użyć klasy znaków \p{Cntrl}
Następnie wystarczy użyć następującego kodu:
stringWithSpecialCharcters.replaceAll("\\p{Cntrl}", replacement);
Działa to, jeśli założymy, że "znaki specjalne" oznaczają znaki sterujące ASCII. Z mojego doświadczenia wynika zazwyczaj, że jest to interpunkcja, ale w tym przypadku nikt się nie domyśla. –
Witamy w SO, zahi r! Skąd czerpiesz struny? Losowi użytkownicy? Usługa internetowa? Czy próbujesz zastąpić coś tym ciągiem lub użyć tego ciągu, aby zastąpić coś innego? – Pops