繁体   English   中英

提取一个省略Java中某些字符的字符串

[英]Extract a string omitting certain characters in java

这是我的弦

1个AP(梨+ ANC)E(CAN anag)

14 EN(T)ICE(NIECE anag)

15 CHIC(“ SHEIK” hom)

该字符串具有隐藏的答案,第一个字符串具有答案外观,第二个字符串具有ENTICE,我必须从字符串中单独提取那些特定的答案。 我试图从中提取那些词

String input = "AP(PEAR + ANC)E (CAN anag)";;
String output = input.substring(0, input.indexOf(' '));
System.out.println(output);

输出:

出现

如您所见,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);

输出:

诱惑

字符“ E”后有一个空格,因此它成功给出了完整的输出。 有什么办法可以为第一个字符串获取这样的输出。 任何帮助将是巨大的!

使用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

您可以尝试在索引" ("上分割字符串:

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(" + ", "");
}

将产生:

诱惑

出现

奇克

在“(”上分割;

像这样:

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

只需将String输入替换为新值即可!

您不能只用空号代替" + " ,然后用" " (空格)分开吗?

像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM