2016-09-22 21 views
-3

是否有沒有在Java中使用Substring();刪除字符串的最後三個字符?刪除使用子串的字符串w/o的最後三個字符

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

*爲什麼*你想避免'substring'? –

+0

@Joel當OP說「不使用子串」時使用'substring'? – Andreas

回答

6

這是一個非常奇怪的限制,但你可以做到這一點平凡是這樣的:

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

但是,這也許不是一個真正的問題的精神,因爲String實現subSequence通過calling substring

這裏有一些其他的方法可以做到這一點:

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

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

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

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

安迪,只是添加了更多晦澀的方式。 ;-)在盒子外面思考盒子的要求。 – Andreas

+0

@Andreas你能處理那些0,1,2長度的情況嗎? (它沒有說在這些情況下做什麼,但這會讓你的方式與我的一致) –

+0

剛剛做過。對不起,我一開始就錯過了。 – Andreas

0

StringUtils阿帕奇也可能是一種選擇,儘管上面給出的答案是非常好的

String a = "ABCDE123"; 
System.out.println(StringUtils.left(a, a.length()-3)); 
相關問題