Java 只需要在“-”之间拆分字符串
嘿,我需要你帮我解开绳子。问题是我只需要在-。 例如:Java 只需要在“-”之间拆分字符串,java,string,substring,Java,String,Substring,嘿,我需要你帮我解开绳子。问题是我只需要在-。 例如: ABC_DEF-HIJ (KL MNOP_QRS) 我需要在string1中存储DEF,在string2中存储HIJ 其他一些格式是 AB (CDE)_FGH IJK/LMN-OPQ (RST 这里也是string1=LMN string2=OPQ 我只需要在-之后和之前的单词考虑使用正则表达式的这种方法: public static void main(String[] args) { Pattern p = Pattern
ABC_DEF-HIJ (KL MNOP_QRS)
我需要在string1中存储DEF,在string2中存储HIJ
其他一些格式是
AB (CDE)_FGH IJK/LMN-OPQ (RST
这里也是string1=LMN
string2=OPQ
我只需要在-之后和之前的单词考虑使用正则表达式的这种方法:
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的内容,因此基本上您需要先按-拆分,然后每边按一个非单词字符拆分 因此,您可以尝试:
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"
试试这个:
String[] parts = yourString.split("-");
//You can then access each part with: parts[index]
输出为:
ABC_DEF-HIJ (KL MNOP_QRS) ... string1 = [DEF] string2 = [HIJ]
AB (CDE)_FGH IJK/LMN-OPQ (RST ... string1 = [LMN] string2 = [OPQ]
你已经试着做什么了?你能显示你的代码吗?一些提示:使用indexOf-然后在两个方向上检查有多少个字母,直到出现一个非字母顺序的字母。然后你知道哪些字符与构建这两个字符串相关。哇,谢谢兄弟:D它就像一个符咒,正是我想要的:
ABC_DEF-HIJ (KL MNOP_QRS) ... string1 = [DEF] string2 = [HIJ]
AB (CDE)_FGH IJK/LMN-OPQ (RST ... string1 = [LMN] string2 = [OPQ]