2016-09-22 4 views
-3

Gibt es trotzdem die letzten drei Zeichen eines Strings zu entfernen, ohne Substring(); in Java zu verwenden?Entfernen der letzten drei Zeichen eines Strings ohne Substring

String stringOfFileName = this.first.imageHelper() + this.rest.images(); 
    return stringOfFileName - *last three characters*; 
+1

* sehr gut * Warum tun Sie 'substring' vermeiden wollen? –

+0

@Joel Verwenden von 'Teilzeichenfolge ', wenn OP" ohne Teilzeichenfolge "sagte? – Andreas

Antwort

6

Es ist eine ziemlich seltsame Einschränkung, aber man kann es trivialerweise wie folgt tun:

int m = Math.max(0, string.length() - 3); 
return string.subSequence(0, m).toString(); 

Aber das ist vielleicht nicht wirklich im Sinne der Frage, da StringsubSequence von calling substring implementiert.

Hier sind ein paar andere Möglichkeiten, wie Sie es tun:

StringBuilder sb = new StringBuilder(string); 
sb.setLength(m); 
return sb.toString(); 

oder

char[] cs = string.toCharArray(); 
return new String(cs, 0, m); 

oder

return string.replaceFirst("[\\s\\S]{0,3}$", ""); 

oder

return String.format("%." + m + "s", string); 
+0

Andy, nur noch mehr obskure Wege hinzugefügt. ;-) Denken außerhalb der Box für eine outside the Box-Anforderung. – Andreas

+0

@Andreas könnten Sie die Fälle 0,1,2 Länge in denen umgehen? (Es sagt nicht, was in diesen Fällen zu tun ist, aber das würde Ihre Wege mit mir konsistent machen) –

+0

Just Do. Tut mir leid, dass ich das zuerst verpasst habe. – Andreas

0

StringUtils Apache könnte auch eine Option sein, obwohl die oben gegebenen Antworten

String a = "ABCDE123"; 
System.out.println(StringUtils.left(a, a.length()-3)); 
Verwandte Themen