用于截断String的正则表达式

时间:2012-12-20 10:44:52

标签: java regex

在这里截断字符串是我正在使用的:

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”

7 个答案:

答案 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() ));
    }