Chcę usunąć ostatni znak z ciągu. Próbowałem to zrobić:
public String method(String str) {
if (str.charAt(str.length()-1)=='x'){
str = str.replace(str.substring(str.length()-1), "");
return str;
} else{
return str;
}
}
Pobieranie długości ciągu - 1 i zastępowanie ostatniej litery niczym (usuwanie), ale za każdym razem, gdy uruchamiam program, usuwa środkowe litery, które są takie same jak ostatnia litera.
Na przykład słowo to „wielbiciel”; po uruchomieniu metody pojawia się „admie”. Chcę, żeby to zwróciło słowo podziw.
null != str &&
na początku kontroli.str != null &&
!if (str = NULL)
co nie tylko zawsze da wartość false (NULL == 0 == false), ale także przypisze wartość, dostr
której najprawdopodobniej nie chcesz tego zrobić. Nie można jednak pisać,if (NULL = str)
ponieważ NULL nie jest zmienną i nie można jej przypisać. Bezpieczniej jest umieścić NULL po lewej stronie. Nie jest to jednak problem w Javie.Dlaczego nie tylko jedna wkładka?
Pełny kod
Próbny
źródło
return str.substring(0,str.length()-1);
jako ulepszeniePonieważ zajmujemy się tym tematem, można również używać wyrażeń regularnych
źródło
Opisany problem i proponowane rozwiązania czasami dotyczą usuwania separatorów. Jeśli tak jest w twoim przypadku, spójrz na Apache Commons StringUtils, ma on metodę o nazwie removeEnd, która jest bardzo elegancka.
Przykład:
Wynikałoby z: „ciąg 1 | ciąg 2 | ciąg 3”
źródło
źródło
Nie próbuj na nowo wymyślać koła, podczas gdy inni już napisali biblioteki do wykonywania operacji na łańcuchach:
org.apache.commons.lang3.StringUtils.chop()
źródło
Użyj tego:
źródło
W przypadku, gdy próbujesz powstrzymać angielskie słowa
Różnica między stemplami Lucene: EnglishStemmer, PorterStemmer, LovinsStemmer przedstawia niektóre opcje Java.
źródło
W Kotlin można użyć metody dropLast () klasy string. Spuści podaną liczbę z ciągu, zwróci nowy ciąg
źródło
Jeśli chodzi o czytelność, uważam to za najbardziej zwięzłe
Indeksy ujemne mogą być używane w narzędziu StringUtils Apache. Wszystkie liczby ujemne są traktowane od przesunięcia od końca łańcucha.
źródło
usuwa ostatnie wystąpienie „xxx”:
usuwa ostatnie wystąpienie „xxx”, jeśli jest ostatnie:
możesz zamienić „xxx” na to, co chcesz, ale uważaj na znaki specjalne
źródło
źródło
źródło
Spójrz na klasę StringBuilder:
źródło
źródło
Jedna linijka (tylko zabawna alternatywa - nie próbuj tego w domu, a już udzielono świetnych odpowiedzi):
źródło
Dlaczego nie użyć sekwencji ucieczki ...!
Życie jest teraz znacznie łatwiejsze. XD! ~ Czytelny jednowarstwowy
źródło
Większość odpowiedzi tutaj zapomniała o parach zastępczych .
Na przykład znak 𝕫 (punkt kodowy U + 1D56B) nie pasuje do jednego
char
, więc aby być reprezentowanym, musi tworzyć zastępczą parę dwóch znaków.Jeśli po prostu zastosuje się obecnie przyjętą odpowiedź (używając
str.substring(0, str.length() - 1)
, dzieli się parę zastępczą, co prowadzi do nieoczekiwanych rezultatów.Należy również sprawdzić, czy ostatnia postać jest parą zastępczą:
źródło
IndexOutOfBoundsException
? (np. czy jest możliwe, że Character.isSurrogate zwraca wartość true, gdy tak naprawdę nie ma przed nią znaku, co daje wynikstr.length()-cut
ujemny).2
przezMath.min(2, str.length())
.Java 8
Wyjście: test-ab
źródło
Używam tego w moim kodzie, jest to łatwe i proste. działa tylko, gdy String ma> 0. Mam go podłączony do przycisku i wewnątrz poniższej instrukcji if
źródło
źródło
jeśli masz wyjątkowy charakter; w json wystarczy użyć String.replace (";", ""), w przeciwnym razie musisz przepisać wszystkie znaki w ciągu minus ostatni.
źródło
Jak zrobić znak w rekurencji na końcu:
na przykład:
źródło
Oto odpowiedź, która działa z kodowymi punktami poza Podstawowym wielojęzycznym samolotem (Java 8+).
Korzystanie ze strumieni:
Bardziej wydajne może:
źródło
Możemy użyć podciągów. Oto przykład
źródło
wystarczy zastąpić warunek „jeśli” w ten sposób:
to załatwi sprawę.
źródło
Załóżmy, że łączna długość mojego ciągu = 24 Chcę wyciąć ostatni znak po pozycji 14 do końca, co oznacza, że chcę, aby był tam początek 14. Więc stosuję następujące rozwiązanie.
źródło
Musiałem napisać kod dla podobnego problemu. Jednym ze sposobów, w jaki udało mi się to rozwiązać, była rekurencyjna metoda kodowania.
Większość kodu, który widziałem na ten temat, nie używa rekurencji, więc mam nadzieję, że mogę pomóc tobie lub komuś, kto ma ten sam problem.
źródło
Bułka z masłem:
źródło
Jest to jeden ze sposobów usunięcia ostatniego znaku z ciągu:
źródło