比方說,我有以下文本字符串:解析信息從一個字符串中的Java中心
「第一:中心:最後一個」
我想只提取此字符串從「中心」 。但是,我不知道在字符串的開始,結尾或中心會是什麼。我所知道的是,冒號將分開三個字符串,我需要的字符串是冒號之間的部分。
使用Java,我可以完成這項任務的最簡潔的方法是什麼?
非常感謝您的時間。
比方說,我有以下文本字符串:解析信息從一個字符串中的Java中心
「第一:中心:最後一個」
我想只提取此字符串從「中心」 。但是,我不知道在字符串的開始,結尾或中心會是什麼。我所知道的是,冒號將分開三個字符串,我需要的字符串是冒號之間的部分。
使用Java,我可以完成這項任務的最簡潔的方法是什麼?
非常感謝您的時間。
由於您只想中心,您可以執行使用相應的指數的子字符串。這將比split()方法更有效,因爲您將創建更少的字符串和數組實例。
public class Main {
public static void main(String[] args) {
String fullStr = "first:center:last";
int firstColonIndex = fullStr.indexOf(':');
int secondColonIndex = fullStr.indexOf(':', firstColonIndex + 1);
String centerStr = fullStr.substring(firstColonIndex + 1, secondColonIndex);
System.out.println("centerStr = " + centerStr);
}
}
按道理,我會去(此效果):
String[] splits = string.split(":");
String centerStr = splits[1];
使用String.split()
並採取數組中的第二個項目。
try{
String str="first:center:last";
String result = str.split(":")[1];
}catch(ArrayIndexOutOfBounds aex){
//handle this scenario in your way
}
基於非正則表達式的解決方案,我相信是最快的:
String string = "left:center:right";
String center = string.substring(string.indexOf(':') + 1, string.lastIndexOf(':'))
這3襯墊的我在2號線做了... ...到底能做到這一點的1個太行...大聲笑 – 2011-03-07 18:11:32
是的,但它避免使用split();) – shams 2011-03-07 18:57:48