在这里截断字符串是我正在使用的:
String test1 = "this is test truncation 1.pdf";
String p1 = test1.substring(0, 10) + "...";
System.out.println(p1);
输出是'这是te ...' 如何访问文件扩展名以使输出变为:'this is te ... pdf' 我可以使用substring方法来访问最后三个字符,但其他文件扩展名可以是4个字符,例如.aspx
是否有正则表达式我可以使用“这是测试截断1.pdf”变成“这是te ... pdf”
答案 0 :(得分:6)
你可以用这样的快速正则表达替换来完成所有这些:
test1.replaceAll("(.{0,10}).*(\\..+)","$1...$2")
答案 1 :(得分:2)
这样做:
String[] parts = test1.split("\\.");
String ext = parts[parts.length-1];
String p1 = test1.substring(0, 10) + "..."+ext;
System.out.println(p1);
答案 2 :(得分:2)
你可以简单地使用
test1.substring(0, 10) + "..." + test1.substring(test1.lastIndexOf('.'))
答案 3 :(得分:0)
对于这个简单的任务,您不需要正则表达式
String p1 = test1.substring(0, 10) + "..." + test1.substring(test1.lastIndexof('.'));
答案 4 :(得分:0)
试试这个 -
String test1 = "this is test truncation 1.pdf";
String[] test2 = test1.split("\\.");
String p1 = test1.substring(0, 10) + "..." + test2[test2.length-1];
System.out.println(p1);
答案 5 :(得分:0)
您可以使用.+[.](.*?)
这匹配所有字符,包括点,然后是点,然后是任何字符,但不是贪心,所以第一部分应该抓住最后一个点之前的所有字符串。捕获组将允许您检索所需的部件。
答案 6 :(得分:0)
我使用这种方法,但只有你有单一的“。”才能使用。对于文件扩展名也是如此。可能这是一个新手的方法,因为你也可以使用String类的split方法.......
String str="abcdefg ghi.pdf";
int dotIndex=str.indexOf(".")+1;
if(str.indexOf(" ", dotIndex)!=-1)
System.out.println(str.substring(dotIndex,str.indexOf(" ", dotIndex) ));
else
{
System.out.println(str.substring(dotIndex,str.length() ));
}