我有10
之後和之前TM
即MJ
從下面的字符串來檢索值:解析字符串值
「:XX/10/MJ/TM」
我我能夠從下面的代碼檢索值:
String s=":XX: /10/MJ/TM *";
String[] arr = s.split("\\r?\\n?/");
for(int i=0;i<arr.length;i++)
System.out.println(arr[2]);
是否有任何有效的方法來做到這一點?
我有10
之後和之前TM
即MJ
從下面的字符串來檢索值:解析字符串值
「:XX/10/MJ/TM」
我我能夠從下面的代碼檢索值:
String s=":XX: /10/MJ/TM *";
String[] arr = s.split("\\r?\\n?/");
for(int i=0;i<arr.length;i++)
System.out.println(arr[2]);
是否有任何有效的方法來做到這一點?
如果字符串的格式是固定(相對於位置和分離器)
String s=":XX: /10/MJ/TM *";
System.out.println(s.split("/")[2]); // MJ
我會使用一個正則表達式與一組捕捉有趣的一點:
String s=":XX: /10/MJ/TM *";
Pattern p = Pattern.compile(".*10/(.*)/TM.*");
Matcher matcher = p.matcher(s);
matcher.find();
System.out.println(matcher.group(1));
警告:您應該圍繞find()和group()調用編寫代碼以避免錯誤。
如果您知道有關/分離器,還可以簡化正則表達式:「/()/.*」
爲什麼對loop
這裏?
您的代碼可以簡單地張貼這樣
String s = ":XX: /10/MJ/TM *";
String[] arr = s.split("\\r?\\n?/");
System.out.println(arr[2]);
String s =「:XX:/ 10/MJ/TM *」; System.out.println(s.substring(s.indexOf(「10 /」)+ 3,s.indexOf(「/ TM」))); –
什麼是你的字符串的格式?您要查找的字段總是以'/ 10 /'開頭,後面跟着'/ TM'?它總是第三個字段'/'是字段分隔符嗎? – beny23
for循環已過時...除非您想多次打印 –
在您的示例中,在'10'之後,'TM'之前有'/ MJ /',而不是'MJ'。如果您的規格清晰,我會發佈一個答案。 – jlordo