的Java分割字符串我有大的字符串是這樣的:在自定義的位置
String = "ABC114.553111.325785.658EFG114.256114.589115.898";
我想實現:
String1 = "ABC";
String2 = "114.553";
String3 = "111.325";
String4 = "785.658";
有時是無法三個數字,然後點和四位數字後。但總是在數字之前有三個字母。
的Java分割字符串我有大的字符串是這樣的:在自定義的位置
String = "ABC114.553111.325785.658EFG114.256114.589115.898";
我想實現:
String1 = "ABC";
String2 = "114.553";
String3 = "111.325";
String4 = "785.658";
有時是無法三個數字,然後點和四位數字後。但總是在數字之前有三個字母。
String s = "ABC114.553111.325785.658EFG114.256114.589115.898";
Matcher prefixes = Pattern.compile("([A-Z]{3})").matcher(s);
for (String part : s.split("[A-Z]{3}")) {
if (part.equals("")) {
continue;
}
prefixes.find();
System.out.println(prefixes.group(0));
for (int i = 0; i < part.length(); i += 7) {
System.out.println(part.substring(i, i + 7));
}
}
輸出:
ABC
114.553
111.325
785.658
EFG
114.256
114.589
115.898
只有你錯過的是OP指定的字母作爲輸出的一部分 – StormeHawke
感謝您的提示,我相應地更新了示例。 – Matt
壞選項可以是遍歷串0到n-4。並跟蹤第(i + 3)個字符,如果它是「。」,你知道在哪裏分裂 - 在「我」。
@Matt - 您丟失了字母「ABC」和「EFG」字符串,這些字母應該保留。
您可以使用以下正則表達式:
([^\.]){3}(\....)?
這裏的程序...
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class C {
public static void main(String[] args) {
String a = "([^\\.]){3}(\\....)?";
String b = "ABC114.553111.325785.658EFG114.256114.589115.898";
Pattern pattern = Pattern.compile(a);
Matcher matcher = pattern.matcher(b);
while (matcher.find()) {
System.out.println("found: " + matcher.group(0));
}
}
}
輸出
found: ABC
found: 114.553
found: 111.325
found: 785.658
found: EFG
found: 114.256
found: 114.589
found: 115.898
http://ideone.com/5kRTG5 – TheKojuEffect
你能描述的模式?你到目前爲止所展示的內容以及你所說的內容似乎沒有遵循某種模式。 – mikea
是否可以將一些字符插入要分割的字符串中? –
「有時它不是三位數,然後是點和四位數」 - 你怎麼區分這個:114.5533&111.3257'這個:'114.553&3111.3257'給定輸入:'114.5533111.3257'? –