在java中提取省略某些字符的字符串

时间:2016-04-29 11:21:29

标签: java string substring

这是我的字符串

1 AP(PEAR + ANC)E(CAN anag)

14 EN(T)ICE(NIECE anag)

15 CHIC(“SHEIK”hom)

字符串隐藏了答案, 第一个字符串的答案是APPEARANCE,第二个字符串是ENTICE 我必须从字符串中单独提取这些特定答案。 我试图通过

从中提取这些词
String input = "AP(PEAR + ANC)E (CAN anag)";;
String output = input.substring(0, input.indexOf(' '));
System.out.println(output);

输出:

AP(PEAR

正如你所看到的,在R之后有一个空格,所以子串停在那里,所以输出。但有没有办法读到字符'E'(即字符串'APPEARANC E '的结尾)?如果有空格,我想停止阅读>如果下一个字符是'('。

我在同一个程序“EN(T)ICE(NIECE anag)”中有另一种类型的字符串

String input = "EN(T)ICE (NIECE anag)";
String output = input.substring(0, input.indexOf(' '));
System.out.println(output);

输出:

EN(T)ICE

字符'E'后面有一个空格,所以它成功地给出了完整的输出。有没有办法为第一个字符串输出这样的输出。 ?任何帮助都会很棒!!

4 个答案:

答案 0 :(得分:3)

使用replaceAll代替indexOfsubstring

String[] inputs = {
    "AP(PEAR + ANC)E (CAN anag)",
    "EN(T)ICE (NIECE anag)", 
    "CHIC (\"SHEIK\" hom)"};
for (String s : inputs) {
    String output = s.replaceAll(" \\(.*|[()+\\s]", "");
    System.out.println(output);
}

结果:

APPEARANCE
ENTICE
CHIC

答案 1 :(得分:1)

您可以尝试将此字符串拆分为" ("

的索引
String input1 = "EN(T)ICE (NIECE anag)";
String input2 = "AP(PEAR + ANC)E (CAN anag)";
String input3 = "CHIC (\"SHEIK\" hom)";

System.out.println(extract(input1));
System.out.println(extract(input2));
System.out.println(extract(input3));

public static String extract(String s){
    return s.split(" \\(.*")[0]
            .replace("(", "")
            .replace(")", "")
            .replace(" + ", "");
}

将产生:

<强> ENTICE

<强>外观

<强> CHIC

答案 2 :(得分:1)

拆分&#34; (&#34 ;;

像这样:

String input = "AP(PEAR + ANC)E (CAN anag)";
System.out.println(input.split(" \\(.*")[0]);

只需用新值替换String输入!

答案 3 :(得分:1)

你不能只用" + "替换{,1}}然后除以" "(空格)吗?

这样的事情:

private static String convertInputToOutput(final String input) {
    String[] splittedArray = input.replaceAll(" \\+ ", "").split(" ");
    return splittedArray[0];
}

public static void main(final String[] args) {
    System.out.println(convertInputToOutput("AP(PEAR + ANC)E (CAN anag)"));
    System.out.println(convertInputToOutput("EN(T)ICE (NIECE anag)"));
    System.out.println(convertInputToOutput("CHIC (\"SHEIK\" hom)"));
}

输出:

AP(PEARANC)E
EN(T)ICE
CHIC

如果您想要不带括号的输出,也可以使用replaceAll作为括号:

private static String convertInputToOutput(final String input) {
    String[] splittedArray = input.replaceAll(" \\+ ", "").split(" ");
    return splittedArray[0].replaceAll("(", "").replaceAll(")", "");
}

输出:

APPEARANCE
ENTICE
CHIC