2015-06-08 12 views
25

Jak mogę usunąć dwa ostatnie znaki 05 prostego ciągu?Usunąć dwa ostatnie znaki ciągu

Proste:

"apple car 05" 

Kod

String[] lineSplitted = line.split(":"); 
String stopName = lineSplitted[0]; 
String stop = stopName.substring(0, stopName.length() - 1); 
String stopEnd = stopName.substring(0, stop.length() - 1); 

oryginalna linia podziału przed ":"

apple car 04:48 05:18 05:46 06:16 06:46 07:16 07:46 16:46 17:16 17:46 18:16 18:46 19:16 
+3

co próbowałeś do tej pory? –

+1

użyj substring ... –

+2

Cokolwiek w javadoc? – Reimeus

Odpowiedz

36

Odejmij -2 lub -3 podstawą usuwania również ostatniej przestrzeni.

public static void main(String[] args) { 
     String s = "apple car 05"; 
     System.out.println(s.substring(0, s.length() - 2)); 
    } 

Wyjście

apple car 
11

Zastosowanie String.substring(beginIndex, endIndex)

str.substring(0, str.length() - 2); 

podciąg zaczyna się w określonym beginIndex i rozciąga się do znaku o indeksie (endIndex - 1)

+0

Może nie działać, jeśli zwiększymy rozmiar ciągu. Myślę więc, że lepiej jest usunąć z tego, co widać w innych odpowiedziach. –

+0

@ masud.m zaktualizowałeś odpowiedź zgodnie z sugestią. –

1

You można użyć substring Funkcja:

s.substring(0,s.length() - 2)); 

Z pierwszym 0, mówisz do substring że ma się rozpocząć w pierwszym znakiem łańcucha iz s.length() - 2 że ma się zakończyć 2 znaki przed zakończeniem String.

Aby uzyskać więcej informacji o substring funkcja można zobaczyć tutaj:

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

0

To było prawie poprawne tylko zmienić swoją ostatnią linię, jak:

String stopEnd = stop.substring(0, stop.length() - 1); //replace stopName with stop. 

LUB

ty może zastąpić twoje ostatnie dwie linie;

String stopEnd = stopName.substring(0, stopName.length() - 2); 
2

Możesz skorzystać z następujących metod, aby usunąć ostatnią n charakter -

public String removeLast(String s, int n) { 
    if (null != s && !s.isEmpty()) { 
     s = s.substring(0, s.length()-n); 
    } 
    return s; 
} 
0

Alternatywnym rozwiązaniem byłoby użyć jakiegoś regex:

na przykład:

String s = "apple car 04:48 05:18 05:46 06:16 06:46 07:16 07:46 16:46 17:16 17:46 18:16 18:46 19:16"; 
    String results= s.replaceAll("[0-9]", "").replaceAll(" :", ""); //first removing all the numbers then remove space followed by : 
    System.out.println(results); // output 9 
    System.out.println(results.length());// output "apple car" 
0

Możesz również wypróbować następujący kod z ręką wyjątku molwa. Tutaj masz metodę removeLast(String s, int n) (w rzeczywistości jest to zmodyfikowana wersja odpowiedzi masud.m).Musisz podać String s oraz liczbę char, którą chcesz usunąć z ostatniej do tej funkcji removeLast(String s, int n). Jeżeli liczba char s trzeba usunąć z ostatnia jest większa niż podana String długości to rzuca StringIndexOutOfBoundException z niestandardowego komunikatu -

public String removeLast(String s, int n) throws StringIndexOutOfBoundsException{ 

     int strLength = s.length(); 

     if(n>strLength){ 
      throw new StringIndexOutOfBoundsException("Number of character to remove from end is greater than the length of the string"); 
     } 

     else if(null!=s && !s.isEmpty()){ 

      s = s.substring(0, s.length()-n); 
     } 

     return s; 

    } 
Powiązane problemy