[ 목적 ]
file 이름이 긴 경우 50자로 자르고 확장자 붙여주기
[ 활동 ]
1) SubString
java 특정 문자열 찾기
java 특정 문자열부터 자르기
java 특정 순서까지 문자열 자르기
https://helena90-study.tistory.com/12
[JAVA] 파일 이름 줄이기( substring, lastIndexOf , indexOf )
< 목표 > file 이름이 긴 경우 50자로 자르고 확장자를 뒤에 붙여준다. < 조사 > substring() : 특정 위치부터 문자열 자르기 {문자형}.substring({위치},{위치}) return : String 특정 문자열부터 자르기 String targ
tblog.solena.kr
2) 뒤에서부터 문자열 위치 찾기 lastIndexOf()
package codeTest;
import java.util.ArrayList;
import java.util.List;
public class ma ㅇinRun {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("시시시시작 ");
List<String> files = new ArrayList<>();
// 0- 정상데이터 ( 파일이름, 확장자 모두 50자 이내 ) : 그냥출력
files.add("fileNameTestList.xlsx");
// 1- 확장자 없음 + 이름짧음 : 그냥 출력
files.add("하나삼사오육칠팔구십kopkeo하나삼사오wfjhihewfio");
// 2- 확장자 없음 + 이름길다 : 이름만 50자
files.add("하나삼사오육칠팔구십wefopkpwefkopefw하나삼사오육칠팔구십kopkeo하나삼사오육칠팔구십" + "pefwiojhe=");
// 3- 파일 이름 10자 + 파일 확장자가 30자 이상 : 확장자 잘림
files.add("fileNameTestList.xlsx하나삼사오육칠팔구십1234567890하나삼사오육칠팔구십123");
// 4- 파일 이름 30자 + 파일 확장자가 30자 : 둘 다 잘린다
files.add("하나삼사오육칠팔구십1234567890하나삼사오육칠팔구십.xlsxxlsxlsxlsxxlsxlsxlsxxlsxls");
// 5- . 부터 시작하는 파일 이름
files.add(
".jhefwoiji9두일_삼사오육칠팔구십1234567890두일_삼사오두일_삼사오육칠팔구십1234567890육칠팔구십1234567890두일_삼사오육칠팔구십1234567890efjhoiewfjhoiewfjhihewfio.efwio.xlxs");
// 6- 파일 이름 안에 .이 많음
files.add("efuio.h.e.f.o.h.u.e.f.w.!@#$%^&*(huiohefuoihiouefw.fewfewewf.fweewf.end");
// 7- 파일 확장자 뒤에 문자없음 ( 끝에 .만 )
files.add("하나삼사오육칠팔구십1234567890" + ".두일_삼사오육칠팔구십1234567890" + "삼일이_사오육칠팔구십1234567890" + "사일이삼_오육칠팔구십1234567890"
+ ".오일이삼사_육칠팔구십1234567890" + "육일이삼사오_칠팔구십1234567890" + "칠일이삼사오육_팔구십123456789.");
// 8- 유효 : 100자 넘는 파일이름
files.add("하나삼사오육칠팔구십1234567890" + "두일_삼사오육칠팔구십1234567890" + "삼일이_사오육칠팔구십1234567890" + "사일이삼_오육칠팔구십1234567890"
+ "오일이삼사_육칠팔구십1234567890" + "육일이삼사오_칠팔구십1234567890" + "칠일이삼사오육_팔구십1234567890.pptx");
int testCnt = 0;
int FILE_NAME_SIZE = 50;
for (String fileName : files) {
System.out.println("!testCnt : " + testCnt++);
System.out.println("targetName : " + fileName);
System.out.println("targetName size : " + fileName.length());
// file 이름이 긴 경우 50자로 자른다. (확장자 포함 50자)
if (fileName.length() > FILE_NAME_SIZE) {
int extensionPoint = fileName.lastIndexOf(".");
String extensionName = "";
if (extensionPoint > 0) {
extensionName = fileName.substring(extensionPoint);
if (extensionName.length() > 20) { // 확장자가 20자 초과하면 확장자로 판단하지 않는다.
extensionName = extensionName.substring(0, 20);
}
}
System.out.println("extensionName : " + extensionName);
System.out.println("extensionName size : " + extensionName.length());
String splitedFileName = fileName.substring(0, FILE_NAME_SIZE - extensionName.length());
System.out.println("splitedFileName : " + splitedFileName);
System.out.println("splitedFileName size : " + splitedFileName.length());
fileName = splitedFileName + extensionName;
}
System.out.println("fileName : " + fileName);
System.out.println("fileName size : " + fileName.length());
System.out.println("==================");
}
}
{
System.out.println("시시시시작 ");
String fileName = "하나삼사오육칠팔구십1234567890" + ".두일_삼사오육칠팔구십1234567890"; // + "삼일이_사오육칠팔구십1234567890"
// + "사일이삼_오육칠팔구십1234567890" + ".오일이삼사_육칠팔구십1234567890" + "육일이삼사오_칠팔구십1234567890"
// + "칠일이삼사오육_팔구십1234567890.pptx";
int FILE_NAME_SIZE = 50;
// file 이름이 긴 경우 50자로 자른다.
if (fileName.length() > FILE_NAME_SIZE) {
String splitedFileName = fileName.substring(0, FILE_NAME_SIZE);
System.out.println("splitedFileName : " + splitedFileName);
System.out.println("splitedFileName size : " + splitedFileName.length());
String extensionName = fileName.substring(fileName.lastIndexOf("."));
System.out.println("extensionName : " + extensionName);
fileName = splitedFileName + extensionName;
System.out.println("fileName : " + fileName);
}
}
}
'실무로부터 > 새로운 사실' 카테고리의 다른 글
| [리눅스] MySQL연결시 localhost와 127.0.0.1의 차이주의 (0) | 2023.06.12 |
|---|