如何用两个正则表达式“_”和“。”剪切字符串。

时间:2010-05-26 07:47:17

标签: java string split

我有一个像test_1.doc这样的字符串,我希望将此字符串拆分为1.doc

4 个答案:

答案 0 :(得分:8)

str.split("_")[1]

答案 1 :(得分:4)

请务必咨询API以了解此类事情。 String是一个很好的起点,split是一个很好的关键词,你会发现这个:

public String[] split(String regex):围绕给定正则表达式的匹配拆分此字符串。

    System.out.println(java.util.Arrays.toString(
        "a b c".split(" ")
    )); // prints "[a, b, c]"

    System.out.println(java.util.Arrays.toString(
        "a_b_c".split("_")
    )); // prints "[a, b, c]"

请记住,可能需要转义正则表达式元字符(例如点.):

    System.out.println(java.util.Arrays.toString(
        "a.b.c".split(".")
    )); // prints "[]"
    System.out.println(java.util.Arrays.toString(
        "a.b.c".split("\\.")
    )); // prints "[a, b, c]"

以下是访问返回的String[]的各个部分的示例:

    String[] parts = "abc_def.ghi".split("_");
    System.out.println(parts[1]); // prints "def.ghi"

至于你想要什么,目前尚不清楚,但它可能是这样的:

    System.out.println(java.util.Arrays.toString(
        "abc_def.ghi".split("[._]")
    )); // prints "[abc, def, ghi]"

您也可能对有限的分割感兴趣:

    System.out.println(java.util.Arrays.toString(
        "abc_def_ghi.txt".split("_", 2)
    )); // prints "[abc, def_ghi.txt]"

另一种可能性是你要分开最后_。您仍然可以使用正则表达式执行此操作,但使用lastIndexOf代码要简单得多:

    String filename = "company_secret_128517.doc";
    final int k = filename.lastIndexOf('_');
    String head = filename.substring(0, k);
    String tail = filename.substring(k+1);
    System.out.printf("[%s] [%s]", head, tail);
    // prints "[company_secret] [128517.doc]"

答案 2 :(得分:2)

str.split("[_.]")将按两个标准分开。我不确定为什么问题的标题和它的主体不同但是......

答案 3 :(得分:0)

你到底是什么意思?你可以这样做:

String s = "test_1.doc";
String[] result = s.split("_");
然后

result将包含两个包含“test”和“1.doc”的元素。