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([.]])
将在两个标准上分开。我不知道你的问题的标题和主体为什么不同,尽管…对于这类事情,请始终参考APIString
是一个很好的开始,而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”吗?