Java 学以致用--为我的海贼王统一命名

来源:互联网 发布:西门子加工中心编程 编辑:程序博客网 时间:2024/04/29 11:12

有了新的移动硬盘,于是一口气下了650集的海贼王,于是,需求来了。

虽然不是处女座,但也难以容忍600多集的海贼王一会儿这个命名格式,一会儿另一种命名格式。于是想到了自己是个IT人,于是想通过编程统一命名格式。

1,需求,要保留每一个文件的集数显示,但是要统一格式,主要有下面三种文件形式。

我们可以分析出,集数都是集中在一起作为文件名的一个连续字符串,于是想到通过获得收尾数字的位置,然后截取字符串,于是有了下面的方法。

public static String changeName2(String name) {int m = 0, n = 0;for (int i = 0; i < name.length(); i++) {if (name.charAt(i) - '0' >= 0 && name.charAt(i) - '9' <= 0) {m = i;break;}}for (int i = name.length() - 1; i >= 0; i--) {if (name.charAt(i) - '0' >= 0 && name.charAt(i) - '9' <= 0) {n = i;break;}}return name.substring(m, n + 1);}

运行代码后发现了问题,有的文件格式是mp4格式的,mp4中的4影响了我截取集数,于是只要再上面方法中重新加了个判断,如果有mp4,于是给删了,新方法如下:

public static String changeName2(String name) {if (name.contains("mp4")) {name = name.replace("mp4", "");}int m = 0, n = 0;for (int i = 0; i < name.length(); i++) {if (name.charAt(i) - '0' >= 0 && name.charAt(i) - '9' <= 0) {m = i;break;}}for (int i = name.length() - 1; i >= 0; i--) {if (name.charAt(i) - '0' >= 0 && name.charAt(i) - '9' <= 0) {n = i;break;}}return name.substring(m, n + 1);}

2,重新运行了一遍,终于全部搞定,就是处女座也不要挑刺了。贴上全部代码。

package MyJava;import java.io.File;import java.util.ArrayList;public class SunTest {public static void main(String[] args) {ArrayList<String> fileNames = getFileNames();for (String name : fileNames) {System.out.println(name);}}/** * 得到所有文件的文件名 *  * @return */public static ArrayList<String> getFileNames() {ArrayList<String> nameList = new ArrayList<String>();File mydir = new File("H://onepiece");File[] listFiles = mydir.listFiles();for (File file : listFiles) {String filename = file.getName();filename = changeName2(filename);boolean result = file.renameTo(new File("H://onepiece","[one_piece-海贼王][" + filename + "].rmvb"));System.out.println(result);nameList.add(file.getName());}return nameList;}/** * 输入文件名,返回需要的集数字符串 *  * @param name * @return */public static String changeName2(String name) {if (name.contains("mp4")) {name = name.replace("mp4", "");}int m = 0, n = 0;for (int i = 0; i < name.length(); i++) {if (name.charAt(i) - '0' >= 0 && name.charAt(i) - '9' <= 0) {m = i;break;}}for (int i = name.length() - 1; i >= 0; i--) {if (name.charAt(i) - '0' >= 0 && name.charAt(i) - '9' <= 0) {n = i;break;}}return name.substring(m, n + 1);}}
3,其实代码没什么难度,原先我是打算一个个改的,但现在能学以致用心里还是很舒服的。敲代码,不只是为了生活,还应该是一种。贴上效果图一张。

0 0
原创粉丝点击