需要"之间的话。 - "只有字符串拆分

时间:2015-12-17 15:46:25

标签: java string substring

嘿,我需要帮助拆分字符串。问题是我只需要"之间的话。 - " 。 例如:

ABC_DEF-HIJ (KL MNOP_QRS)

我需要在string1中存储DEF,在string2中存储HIJ

其他一些格式

AB (CDE)_FGH IJK/LMN-OPQ (RST

这里也是string1 = LMN

string2 = OPQ

我只需要"之前和之后的单词。 - "

4 个答案:

答案 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]