嘿,我需要帮助拆分字符串。问题是我只需要"之间的话。 - " 。 例如:
ABC_DEF-HIJ (KL MNOP_QRS)
我需要在string1中存储DEF,在string2中存储HIJ
其他一些格式
AB (CDE)_FGH IJK/LMN-OPQ (RST
这里也是string1 = LMN
string2 = OPQ
我只需要"之前和之后的单词。 - "
答案 0 :(得分:0)
使用正则表达式考虑这种方法:
public static void main(String[] args) {
Pattern p = Pattern.compile("(\\w{3})-(\\w{3})");
Matcher m = p.matcher("AB (CDE)_FGH IJK/LMN-OPQ (RST");
if(m.find()) {
System.out.println("1: " + m.group(1));
System.out.println("2: " + m.group(2));
}
}
产生
1: LMN
2: OPQ
如果你的话是""长度超过3个字符,你可能想要将{3}改为+为任何> = 1
答案 1 :(得分:0)
所以基本上你要先用-
分割,然后用非单词字符分开。
因此你可以尝试:
String s = "ABC_DEF-HIJ (KL MNOP_QRS)";
String[] splits = s.split("-"); // {"ABC_DEF", "HIJ (KL MNOP_QRS)"}
String[] lefts = split[0].split("[^a-zA-Z]"); // {"ABC", "DEF"}
String[] rights = split[1].split("[^a-zA-Z]"); // {"HIJ", "", "KL", "MNOP", "QRS"}
String string1 = lefts[lefts.length - 1]; // "DEF""
String string2 = rights[0]; // "HIJ"
答案 2 :(得分:0)
试试这个:
/
答案 3 :(得分:0)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringExtractTest {
private static class ExtractResult {
private ExtractResult(String string1, String string2) {
this.string1 = string1;
this.string2 = string2;
}
private String string1;
private String string2;
public String getString1() {
return string1;
}
public String getString2() {
return string2;
}
}
public static ExtractResult extract(String input) {
Pattern p = Pattern.compile("([a-zA-Z]+)-([a-zA-Z]+)");
Matcher m = p.matcher(input);
if (m.find()) {
return new ExtractResult(m.group(1), m.group(2));
} else {
return null;
}
}
public static void main(String[] args) {
String inputs[] = {
"ABC_DEF-HIJ (KL MNOP_QRS)",
"AB (CDE)_FGH IJK/LMN-OPQ (RST"
};
for (String input : inputs) {
ExtractResult result = extract(input);
if (result != null) {
System.out.println(input + " ... string1 = [" + result.getString1() + "] string2 = [" + result.getString2() + "]");
}
}
}
}
输出结果为:
ABC_DEF-HIJ (KL MNOP_QRS) ... string1 = [DEF] string2 = [HIJ]
AB (CDE)_FGH IJK/LMN-OPQ (RST ... string1 = [LMN] string2 = [OPQ]