实际开发中,常常会出现用到一批文件,而这些文件的文件名有某种规律,我们在表述的时候,往往习惯简写,但这样程序又不好识别。
比如:
c:/abc/xyz/k[11..19].dat
实际表示的就是:
c:/abc/xyz/k11.dat
c:/abc/xyz/k12.dat
c:/abc/xyz/k13.dat
c:/abc/xyz/k14.dat
c:/abc/xyz/k15.dat
c:/abc/xyz/k16.dat
c:/abc/xyz/k17.dat
c:/abc/xyz/k18.dat
c:/abc/xyz/k19.dat
本题目要求是:给定一个含有简写的串,要求展开为所有文件名。
简写的格式为:[整数..整数]
public class Unfold {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int start = 0;
int end = 0;
String first = "";
String second = "";
StringBuffer sb = new StringBuffer();
String origin = "c:/abc/xyz/k[11..19].dat";
java.util.regex.Pattern p=java.util.regex.Pattern.compile("(\\[)([0-9]+)[.]{2}([0-9]+)(\\])");
java.util.regex.Matcher m=p.matcher(origin);
//符合要求处理数字
if(m.find()){
first = m.group(2);
second = m.group(3);
start = m.start(2);
end = m.end(3);
}
String front = origin.substring(0, start);
String behind = origin.substring(end);
int i = Integer.parseInt(first);
int j = Integer.parseInt(second);
for(int k=i;k<=j;k++){
System.out.println(front+k+behind);
}
}
}