我有一个像test_1.doc
这样的字符串,我希望将此字符串拆分为1.doc
答案 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”的元素。