有人可以給我以下的正則表達式的建議嗎?如何將具有不同值的字符串拆分爲多個分隔符?
例子:city^chennai|country^India~TamilNadu|pincode^600034
預計分隔字符串是:
city
chennai
country
India,TamilNadu
pincode
600034
注:~
應轉換成,
有人可以給我以下的正則表達式的建議嗎?如何將具有不同值的字符串拆分爲多個分隔符?
例子:city^chennai|country^India~TamilNadu|pincode^600034
預計分隔字符串是:
city
chennai
country
India,TamilNadu
pincode
600034
注:~
應轉換成,
只是用逗號替換~
後非字字符(不包括逗號)拆分:
input.replaceAll("~",",").split("[^\\w,]");
然後(根據需要地圖評語)迭代中對所得到的陣列上方,加入地圖條目。
下面是一些測試代碼:
public static void main(String[] args) {
String input = "city^chennai|country^India~TamilNadu|pincode^600034";
String[] things = input.replaceAll("~", ",").split("[^\\w,]");
Map<String, String> map = new HashMap<String, String>();
for (int i = 0; i < things.length; i+=2) {
map.put(things[i], things[i+1]);
}
System.out.println(map);
}
輸出:
{pincode=600034, country=India,TamilNadu, city=chennai}
((w+)[|^~])*(w+)
編輯:現在我注意到,它的地圖狀,所以或許:
((w+)^(w+)|)*(w+)^(w+)
用[...]
中的自定義類替換w +以使〜也可以工作。
Pattern p = Pattern.compile("((w+)^(w+)|)*(w+)^(w+)");
Matcher m = p.matcher("city^chennai|country^India~TamilNadu|pincode^600034");
if(m.matches()){
for(int i = 1; i < m.groupCount(); i+=2) {
// m.group(i) and m.group(i+1) gives you the values.
}
}
如果你想更簡單的方法,使用Pattern#split("")
你可以使用這個:
.replaceAll("~", ",").split("[|^]")
假設字符串正確分手了,你可以把它們組通過將索引2k處的字符串映射到索引(2k + 1)而成名稱 - 值對:
謝謝..上述表達工作正常。 – Kathir
您可以在此處使用StringTokenizer
類以不同的分隔符分割字符串。 使用hasNextToken("delimiterHereAsString")
方法指定要分割的不同分隔符。
此鏈接可能會幫助你。 http://www.java-examples.com/java-stringtokenizer---specify-delimiter-example
不能使用YOUR_STRING_VARIBLE.replace( 「^」, 「 」).replace(「 |」,」「).replace (「〜」,「,」) –