如何在java中的图像格式之前连接

时间:2015-03-09 07:15:27

标签: java

我的字符串名称为

String name = "Test.jpg"

或者

 String name = "Test.png"

 String name = "Test.jpeg"

 String name = "Test.gif"

我在名称

附加一个唯一的ID

如下图所示

    Random randomGenerator = new Random();
      int randomInt = randomGenerator.nextInt(100);
             name = name+randomInt;
                System.out.println(name);

使用此文件名称为

Test.jpg86

我怎样才能让它看起来像

Test_86.jpg

任何人都可以让我知道如何追加图像

7 个答案:

答案 0 :(得分:1)

您可能希望考虑在扩展之前出现更多点的可能性,以获得完全可靠的解决方案。 String.split()解决方案只假设一个点。

  • 使用正则表达式通过Pattern / Matcher查找最后一部分。
  • 测试文件名是否实际包含点
  • 使用String.format()构建名称,您可以使用%04d作为一个不错的填充名称,例如Test_0028.jpg等。

实施例

String name = "Test.foo.bar.jpg";

Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(100);
Matcher matcher = Pattern.compile("(.*)\\.(.*?)").matcher(name);
if (matcher.matches()) {  // <== test input filename is OK?
    System.out.println(String.format("%s_%d.%s", matcher.group(1), randomInt, matcher.group(2)));
}

输出

Test.foo.bar_28.jpg

Splitting已由Apache Commons IO class FilenameUtils.getExtension()

解决

答案 1 :(得分:1)

令人难以置信的是,人们建议使用正则表达式和第三方库来实现这么简单的事情:

int period = name.lastIndexOf('.');
name = name.substring(0, period) + "_" + randomInt + name.substring(period); 

答案 2 :(得分:0)

假设

String name = "Test.jpg"

String format[] = name.split(".");

String finalName = format[0] + "_" + randomInt + format[1]

答案 3 :(得分:0)

您可以使用split

    String[] nameSplit = name.split("\\.");
    String newName = nameSplit[0] + randomInt + "." + nameSplit[1];

考虑到split(".")无效,因为split将正则表达式作为参数和#34;。&#34;匹配任何单个字符

答案 4 :(得分:0)

   String[] imageArray=imageName.split(\\".");
   String newImageName= imageArray[0]+"_"+ID+"."+imageArray[1];

使用分割图像。并将类型附加到第一部分并连接所有三个..

ID必须是字符串,图像名称不得包含任何内容。在名称中你将不得不迭代数组大小,并且必须追加到数组的倒数第二个元素。

答案 5 :(得分:0)

假设名称中的点数不超过1个:

    String[] split = name.split("\\.", 2);

    if (split.length > 1) {
        String result = split[0] + "_" + randomInt + "." + split[1];
    }

如果名称中可能有更多点,请使用匹配器:

    String name = "abc.def.ghi.jpg";
    Random random = new Random();
    int randomInt = random.nextInt(100);
    Pattern p = Pattern.compile("(.*)\\.([^.]*)");
    Matcher m = p.matcher(name);
    if (m.matches()) {
        String result = m.group(1) + "_" + randomInt + "." + m.group(2);
        System.out.println(result); // abc.def.ghi_61.jpg
    }

答案 6 :(得分:0)

您可以尝试这样的事情:

name = name.replace(".",("_" + randomInt + "."));

或者,如果name包含多于一个.

String extension = name.substring(name.lastIndexOf("."),name.length());
name = name.replace(extension,("_" + randomInt + extension));