我的字符串名称为
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
任何人都可以让我知道如何追加图像
答案 0 :(得分:1)
您可能希望考虑在扩展之前出现更多点的可能性,以获得完全可靠的解决方案。 String.split()解决方案只假设一个点。
实施例
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));