'java'에 해당되는 글 2건
- 2015.09.15 간단하게 Random String 만들기
- 2012.01.03 java 한글을 2byte로 취급하여 substring 하는 함수 1
2015. 9. 15. 16:22
간단하게 Random String 만들기
2015. 9. 15. 16:22 in 개발관련/java
출처 : http://theeye.pe.kr/archives/1321
많은 주옥같은 함수들이 있긴 했는데 이게 제일 간편했음 ㅎㅎㅎ
-------------------------------------------------------------------------------------------------------------------------
간단하게 랜덤한 문자열을 생성해야 할때 사용할 수 있는 문자열 생성 함수 있습니다.
/**
* 랜덤한 문자열을 원하는 길이만큼 반환합니다.
*
* @param length 문자열 길이
* @return 랜덤문자열
*/
private static String getRandomString(int length)
{
StringBuffer buffer = new StringBuffer();
Random random = new Random();
String chars[] =
“a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z”.split(“,”);
for (int i=0 ; i<length ; i++)
{
buffer.append(chars[random.nextInt(chars.length)]);
}
return buffer.toString();
}
2012. 1. 3. 12:06
java 한글을 2byte로 취급하여 substring 하는 함수
2012. 1. 3. 12:06 in 개발관련/기타
// java에선 한글도 1글자, 영문이나 다른 글자도 1글자로 취급되어 substring 된다.
// 이게 통신같은데선 문제가 될 수가 있어서 한글은 2byte, 그 외는 1byte 로 취급하는 함수가 필요
// 안드로이드에서 쓸거였는데, 이상하게 인터넷에서 찾은건 정상 동작을 하지 않아서
// 자력갱생으로 만듬;; 뭐 오류가 좀 있는거 같은데 괜찮을거임 ( -_-);;;
// 참고로 한글을 UTF-8로 취급하면 getbyte시에 한글이 3byte, 기타는 1byte로 먹고
// euc-kr로 하면 한글이 2byte 나머지는 1byte를 차지한다
private String subString(String strData, int iStartPos, int iByteLength) {
// 이게 통신같은데선 문제가 될 수가 있어서 한글은 2byte, 그 외는 1byte 로 취급하는 함수가 필요
// 안드로이드에서 쓸거였는데, 이상하게 인터넷에서 찾은건 정상 동작을 하지 않아서
// 자력갱생으로 만듬;; 뭐 오류가 좀 있는거 같은데 괜찮을거임 ( -_-);;;
// 참고로 한글을 UTF-8로 취급하면 getbyte시에 한글이 3byte, 기타는 1byte로 먹고
// euc-kr로 하면 한글이 2byte 나머지는 1byte를 차지한다
private String subString(String strData, int iStartPos, int iByteLength) {
byte[] bytTemp = null;
int iRealStart = 0;
int iRealEnd = 0;
int iLength = 0;
int iChar = 0;
try {
// UTF-8로 변환하는경우 한글 2Byte, 기타 1Byte로 떨어짐
bytTemp = strData.getBytes("EUC-KR");
iLength = bytTemp.length;
for(int iIndex = 0; iIndex < iLength; iIndex++) {
if(iStartPos <= iIndex) {
break;
}
iChar = (int)bytTemp[iIndex];
if((iChar > 127)|| (iChar < 0)) {
// 한글의 경우(2byte 통과처리)
// 한글은 2Byte이기 때문에 다음 글자는 볼것도 없이 스킵한다
iRealStart++;
iIndex++;
} else {
// 기타 글씨(1Byte 통과처리)
iRealStart++;
}
}
iRealEnd = iRealStart;
int iEndLength = iRealStart + iByteLength;
for(int iIndex = iRealStart; iIndex < iEndLength; iIndex++)
{
iChar = (int)bytTemp[iIndex];
if((iChar > 127)|| (iChar < 0)) {
// 한글의 경우(2byte 통과처리)
// 한글은 2Byte이기 때문에 다음 글자는 볼것도 없이 스킵한다
iRealEnd++;
iIndex++;
} else {
// 기타 글씨(1Byte 통과처리)
iRealEnd++;
}
}
} catch(Exception e) {
//
Log.d("DEBUG",e.getMessage());
}
return strData.substring(iRealStart, iRealEnd);
}
}
}