블로그 이미지
박공명

카테고리

분류 전체보기 (103)
된장 (7)
Dev (60)
꼐..꼐임 (6)
식탐 (18)
우리 (4)
Etc (8)
개인자료 (0)
Total70,334
Today2
Yesterday13

영문 숫자 조합의 문자열을 바이트별로 잘라야할 일이 생겼다.


인터넷 검색결과 보통 타이틀 길이를 제한하기위한 용도로만 사용하기에 어쩔수없이 새로만듬.


원하는 바이트의 배열 숫자만큼 그리고 길이가 초과하면 빈칸으로 채운 list를 반환한다.


메모리니 뭐니하는 복잡한건 신경쓰지 않았다.


결과 :

INFO : com.x2trade.base.controller.javaTest - 하이요1

INFO : com.x2trade.base.controller.javaTest - 하이요2

INFO : com.x2trade.base.controller.javaTest - 하이요3

INFO : com.x2trade.base.controller.javaTest - 하이요4

INFO : com.x2trade.base.controller.javaTest - 하이요5

INFO : com.x2trade.base.controller.javaTest - 

INFO : com.x2trade.base.controller.javaTest - 


소스 :

public void testSampleView()

{

String str = new String("하이요1하이요2하이요3하이요4하이요5");

List<String> strList = cutString(str,10,10,10,10,10,10,10);

for(String a : strList) {

logger.info(a);

}

}        

public List<String> cutString(String str,int...cuttingBytes) {

List<String> rtnList = new ArrayList<String>();

if(str == null) str = "";

int maxLength = str.length();

int i=0;

for(int cutBytes : cuttingBytes) {

StringBuffer sb = new StringBuffer("");

if(i>maxLength) {

rtnList.add("");

break;

}

for(;i<maxLength;i++) {

if(sb.toString().getBytes("utf-8").length + str.substring(i, i+1).getBytes("utf-8").length > cutBytes) break;

sb.append(str.substring(i, i+1));

}

rtnList.add(sb.toString());

}

return rtnList;

}

저작자 표시
신고

'Dev > Java' 카테고리의 다른 글

java 문자열 바이트별로 자르기.  (1) 2014.12.16
자바 컴파일 클래스패스 지정  (0) 2010.04.01
java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
Full GC  (0) 2010.03.25
ftp upload  (0) 2010.03.24
ftp 파일삭제.  (0) 2010.03.24
Posted by 박공명
TAG bytes, java, string

아오 개빡칠뻔했음


캐릭터셋문제인건 알았는데 라즈베리파이에서의 xbmc 설정이 어딘지를 몰랐기때문


인터넷 뒤져봐두 안나오더라고 


그래서 안나와서 못햇냐? 그건 아니지 내가 찾았거든


pi@raspberrypi /usr/share/xbmc/language/Korean $ sudo nano langinfo.xml


캐릭터셋이 utf-8 이면 해결된다.

오늘도 즐겁군.


저작자 표시
신고
Posted by 박공명

별거 아니면서도 자주 안쓰면서도 종종 써서 빡치게하는 POI


다음부터라도 편하게 사용하기위하여 정리를 해야겟다.


Maven 기본이져 ?


        <dependency>

   <groupId>org.apache.poi</groupId>

   <artifactId>poi</artifactId>

   <version>3.9</version>

</dependency> 

 

 <dependency>

   <groupId>org.apache.poi</groupId>

   <artifactId>poi-ooxml</artifactId>

   <version>3.9</version>

</dependency>


두개를 추가함으로서 HSSF , XSSF를 사용할수 있게된다


전자는 옜날버젼 후자는 통합문서를 사용할수있게한다.


두개를 같이 사용하기 위하여 파일 확장자를 확인하여 구분하도록 한다


String fileName = File.getOriginalFilename();

logger.info("fileName : {}",fileName);

String fileExt = fileName.substring(fileName.lastIndexOf(".")+1);

logger.info("fileExt : {}",fileExt);

POIFSFileSystem fs = null;

Workbook workBook = null;

if(fileExt.equals("xls")) {

fs = new POIFSFileSystem(File.getInputStream());

workBook = new HSSFWorkbook(fs);

} else if(fileExt.equals("xlsx")) {

workBook = new XSSFWorkbook(File.getInputStream());

}

Sheet sheet = workBook.getSheetAt(0);

int rows = sheet.getPhysicalNumberOfRows();

for(int r=0; r<rows; r++){

Row row = sheet.getRow(r);

String storeNo = "";

String storeName = "";

if(row != null){

for(int c=0; c<2; c++){

Cell cell = row.getCell(c);

if(cell != null) {

switch(cell.getCellType()) {

case HSSFCell.CELL_TYPE_NUMERIC:

if(c == 0) {

storeNo = String.valueOf((int)cell.getNumericCellValue());

} else if(c == 1) {

storeName = String.valueOf(cell.getNumericCellValue());

}

break;

case HSSFCell.CELL_TYPE_STRING:

if(c == 0) {

storeNo = cell.getStringCellValue();

} else if(c == 1) {

storeName = cell.getStringCellValue();

}

break;

case HSSFCell.CELL_TYPE_BLANK:

throw new Exception();

}

}

}

logger.info("{} \t {}",storeNo,storeName);

}

}

저작자 표시
신고
Posted by 박공명
TAG Excel, java, poi

최근에 달린 댓글

최근에 받은 트랙백

글 보관함