Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何使用两个正则表达式剪切字符串”_&引用;及"&引用;_Java_String_Split - Fatal编程技术网

Java “如何使用两个正则表达式剪切字符串”_&引用;及"&引用;

Java “如何使用两个正则表达式剪切字符串”_&引用;及"&引用;,java,string,split,Java,String,Split,我有一个像这样的字符串test_1.doc,我想把这个字符串拆分成1.doc你到底是什么意思?您可以这样做: str.split("_")[1] String s = "test_1.doc"; String[] result = s.split("_"); result将包含包含“test”和“1.doc”的两个元素。您的确切意思是什么?您可以这样做: String s = "test_1.doc"; String[] result = s.split("_"); result将包含包含

我有一个像这样的字符串
test_1.doc
,我想把这个字符串拆分成
1.doc
你到底是什么意思?您可以这样做:

str.split("_")[1]
String s = "test_1.doc";
String[] result = s.split("_");

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

您的确切意思是什么?您可以这样做:

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

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

str.split([.]])
将根据这两个标准进行分割。我不知道你的问题的标题和正文为什么不同,但是…

str.split([.]])
将在两个标准上分开。我不知道你的问题的标题和主体为什么不同,尽管…

对于这类事情,请始终参考API
String
是一个很好的开始,而
split
是一个很好的关键字,您会发现:

:围绕给定正则表达式的匹配项拆分此字符串

    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[] 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]"
还有一种可能性是,您希望在最后一个
\uuuu
上进行拆分。您仍然可以使用regex执行此操作,但使用
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]"

对于这类事情,请始终参考API
String
是一个很好的开始,而
split
是一个很好的关键字,您会发现:

:围绕给定正则表达式的匹配项拆分此字符串

    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[] 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]"
还有一种可能性是,您希望在最后一个
\uuuu
上进行拆分。您仍然可以使用regex执行此操作,但使用
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]"

标准图书馆是你的朋友。尝试使用
String.split()
方法。我想您需要稍微澄清一下这个问题。如果执行
“test\u 1.doc”.split(“\u”)
,则可以获取第二个元素,即
“1.doc”
。或者,您可以使用
indexOf
查找
“\u”
的位置,然后获取一个子字符串-不需要regexp。标准库是您的朋友。尝试使用
String.split()
方法。我想您需要稍微澄清一下这个问题。如果执行
“test\u 1.doc”.split(“\u”)
,则可以获取第二个元素,即
“1.doc”
。或者,您可以使用
indexOf
查找
的位置,然后获取一个子字符串-无需正则表达式。
[\u124;.]
匹配
;要匹配并加下划线或点,您可以使用
[.]
。然而,OP只是试图在下划线上拆分。糟糕的是,我从来没有习惯Java对正则表达式的病态概念。我想知道为什么我不需要逃离这个世界。:-)至于问题-我被标题愚弄了…我这样做了,在数组“test”和“1”中只有2个值,它的长度不应该是3,第三个是“doc”?
[\u124;.]
匹配
;要匹配并加下划线或点,您可以使用
[.]
。然而,OP只是试图在下划线上拆分。糟糕的是,我从来没有习惯Java对正则表达式的病态概念。我想知道为什么我不需要逃离这个世界。:-)至于问题-我被标题愚弄了…我这样做,在数组“test”和“1”中只得到2个值,它的长度不应该是3,第三个是“doc”吗?