W Javie mam ciąg:
Jamaica
Chciałbym usunąć pierwszy znak ciągu, a następnie powrócić amaica
Jak mam to zrobić?
Użyj substring()
funkcji z argumentem lub, 1
aby uzyskać podłańcuch z pozycji 1 ( po pierwszym znaku) do końca łańcucha (pozostawiając drugi argument domyślnie na całej długości łańcucha).
"Jamaica".substring(1);
źródło
removeFirst()
.Użyj
substring()
i podaj liczbę znaków, które chcesz przyciąć od przodu.Odpowiedź: „amaica”
źródło
W Javie usuń wiodący znak tylko wtedy, gdy jest to określony znak
Użyj trójskładnikowego operatora Java, aby szybko sprawdzić, czy twoja postać tam jest, zanim ją usuniesz. Spowoduje to usunięcie znaku wiodącego tylko wtedy, gdy istnieje, jeśli zostanie przekazany pusty ciąg, zwróci pusty ciąg.
Wydruki:
Java, usuń wszystkie wystąpienia znaku w dowolnym miejscu ciągu:
Java, usuń pierwsze wystąpienie znaku w dowolnym miejscu ciągu:
źródło
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
Można użyć metody podciągów
String
klasy, która pobiera tylko indeks początkowy i zwraca podłańcuch rozpoczynający się od znaku o określonym indeksie i rozciągający się na koniec łańcucha.źródło
źródło
Kluczową rzeczą do zrozumienia w Javie jest to, że ciągi są niezmienne - nie można ich zmienić. Dlatego nie ma sensu mówić o „usuwaniu znaku z łańcucha”. Zamiast tego tworzysz NOWY ciąg zawierający tylko żądane znaki. Pozostałe posty w tym pytaniu podają różne sposoby zrobienia tego, ale ważne jest, aby zrozumieć, że nie zmieniają one oryginalnego ciągu w żaden sposób. Wszelkie odniesienia do starego ciągu będą nadal odnosić się do starego ciągu (chyba że zmienisz je tak, aby odwoływały się do innego ciągu) i nowo utworzony ciąg nie będzie na nie wpływał.
Ma to szereg implikacji dla wydajności. Za każdym razem, gdy „modyfikujesz” ciąg, tak naprawdę tworzysz nowy ciąg z domniemanym narzutem (alokacja pamięci i odśmiecanie). Więc jeśli chcesz wprowadzić serię modyfikacji łańcucha i zależy ci tylko na końcowym wyniku (łańcuchy pośrednie będą martwe, gdy tylko je `` zmodyfikujesz ''), bardziej sensowne może być użycie StringBuilder lub StringBuffer.
źródło
możesz zrobić tak:
lub ogólnie:
źródło
Metoda substring () zwraca nowy ciągznaków,który zawiera podciąg znaków obecnie zawartych w tej sekwencji.
Podciąg zaczyna się w określonym
start
i rozciąga się w postaćindex end - 1
.Ma dwie formy. Pierwszy to
String substring(int FirstIndex)
String substring(int FirstIndex, int endIndex)
Przykład
źródło
Natknąłem się na sytuację, w której musiałem usunąć nie tylko pierwszy znak (jeśli był to
#
, ale pierwszy zestaw znaków).String myString = ###Hello World
może być punktem wyjścia, ale chciałbym tylko zachowaćHello World
. można to zrobić w następujący sposób.Dla przypadku OP, wymienić
while
sięif
i działa również.źródło
Innym rozwiązaniem jest rozwiązanie problemu za
replaceAll
pomocą wyrażenia regularnego^.{1}
( demo wyrażenia regularnego ), na przykład:źródło
Moja wersja usuwania wiodących znaków, jednego lub wielu. Na przykład ciąg str1 = „01234”, podczas usuwania wiodącego „0”, wynikiem będzie „1234”. Dla ciągu str2 = „000123” wynikiem będzie ponownie „123”. Dla parametru str3 = „000” wynikiem będzie pusty ciąg: „”. Taka funkcjonalność jest często przydatna podczas konwersji ciągów liczbowych na liczby. Zaletą tego rozwiązania w porównaniu z wyrażeniem regularnym (replaceAll (...)) jest to, że jest ono znacznie szybsze. Jest to ważne przy przetwarzaniu dużej liczby ciągów.
źródło