2013-09-23 94 views
0

我有一個字符串爲:字符串操作從一個檢索兩串字符串

String identifier ="fmt{value}"; 

現在我需要一種方法來操縱這個字符串得到標識符

String format="fmt"; 
String value="value"; 

任何兩個字符串正則表達式或本地Java代碼來操作。

+1

是的,有are.You可以做到這一點。 –

+0

你嘗試了什麼? –

+0

可以自己和/或價值本身包含大括號? – Bathsheba

回答

1
String identifier ="fmt{value}"; 
    String s[] = identifier.split("\\{|\\}");   
    System.out.println(s[0]); 
    System.out.println(s[1]); 
0

是的,你應該能夠用正則表達式來做到這一點。

Pattern pattern; 
Matcher matcher; 
pattern = Pattern.compile("");//here your regex 
matcher = pattern.matcher(identifier); 
while(matcher.find()) { 
    //here your result 
} 

玩得開心:)

+0

你能用精確的正則表達式來詳細說明嗎?我不認爲這會起作用,因爲它只會看到一種模式。並將返回由該單一表達式分割的字符串。 – manish

+0

如果你願意,你可以使用2個正則表達式。如果fmt是一個數字,並且值是另一個數字,則可以使用相同的正則表達式。取決於你的格式和價值看起來像 – Nico

1

剛剛嘗試這一點,它可以幫助你

import java.util.StringTokenizer; 

public class Sample { 

public static void main(String[] args) { 
    String identifier = "fmt{value}"; 
    StringTokenizer st = new StringTokenizer(identifier, "{}"); 

    System.out.println("---- Split by {} ------"); 
    while (st.hasMoreElements()) { 
     System.out.println(st.nextElement()); 
    } 
} 

}

1

嘗試使用split()

String identifier = "fmt{value}"; 
    String format = identifier.split("\\{")[0]; 
    String value = identifier.split("\\{")[1].split("\\}")[0]; 
    System.out.println(format+"  " +value); 

輸出:

fmt  value 
+0

這在計算上相當昂貴:'split'不便宜。 – Bathsheba

1

試試這個:

public void testSplit() { 
    String identifier ="fmt{value}"; 
    String[] result = identifier.split("\\{|\\}"); 
    for(String s: result) { 
     System.out.println(s); 
    } 
}