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
- Java 学以致用--为我的海贼王统一命名
- 我的海贼王
- 统一的命名
- 图片的统一命名
- 我为儿子关云雷命名的出处
- 在我心目中的霸气海贼王——路飞 不一样的路飞
- 海贼王
- 海贼王
- 海贼王
- 海贼王
- 海贼王
- 不为彼岸,只为大海-----海贼王
- 《海贼王》萨博,我一直在,守护着…
- Python 下划线命名转换为 Java风格的命名
- Java能为应用程序提供统一的平台吗?
- 学以致用
- 学以致用
- 学以致用
- ROS(Robot Operating System)操作系统探索总结(一)简介
- Android中的Environment.getExternalStorageState使用,对内置外置SD卡的判断
- Python标准库:内置函数int(x, base=10)
- unity学习之粒子系统
- unity3D之摄像机
- Java 学以致用--为我的海贼王统一命名
- uiautomator实现接电话的case
- LeetCode:《Excel Sheet Column Title》
- git branch&&rebase&&remote
- RAC详细介绍
- ROS(Robot Operating System)操作系统探索总结(二)ROS总体框架
- 平衡二叉树(AVL)图解与实现
- Linux 下 PHP 扩展 redis 编译安装
- 10673 Play with Floor and Ceil 简单数学