Category Archives: JAVA

java 정규식(regex)을 사용하여 2회 이상 반복되는 정규식 패턴의 문자열을 각각 치환(replace)하는 예제

By | 5월 11, 2021

하려고 하는 작업 특정 문자열에서 메타문자 {WRAP}{/WRAP}로 감싸진 숫자를 찾아서 마스킹 처리를 하고 {WRAP}{/WRAP} 메타문자는 삭제하고 싶다. String dtl = "블라블라 {WRAP}123456{/WRAP} 어쩌구 저쩌구 {WRAP}987654{/WRAP} 마무으리 등등등…"; Matcher matcher = Pattern.compile("\\{WRAP\\}(\\d*)\\{/WRAP\\}"); // grouping을 하나 한 것에 주목 StringBuffer sb = new StringBuffer(); while(matcher.find()){ // 계속해서 결과를 찾아간다. //문자열 맨 앞에서부터 sb에 붙여나가면서 치환 처리까지 수행한다.… Read More »

java에서 원치 않는(의도하지 않은) null 문자열 (null string) 이 나올 경우 체크해 볼 사항

By | 8월 21, 2014

  1. StringBuffer, StringBuilder 클래스의 append() 메서드 사용 append() 메서드의 인수로 null 이 들어가면 “null” 문자열이 append() 된다.     2. String 클래스의 valueOf() 메서드 사용 valueOf() 메서드의 인수로 null 이 들어가면 “null” 문자열을 리턴한다.          

java에서 전문을 보낼 때, 바이트배열(byte array)을 생성하는 우아한 방법

By | 5월 9, 2014

  *  Arrays.copyOfRange()와 ByteArrayOutputStream.write(), ByteArrayOutputStream.toByteArray()를 사용하여, 심플하고 우아하게 바이트배열을 생성할 수 있다.     /** * 객체의 모든 내용을 바이트배열로 만들어 리턴한다. * @return */ public byte[] getBytes(){ byte[] ret = null; ByteArrayOutputStream stream = new ByteArrayOutputStream(BYTES_BODY); //BYTES_BODY는 메세지의 전체 길이(bytes)이다. try { stream.write(Arrays.copyOfRange(gameId.getBytes(), 0, BYTES_GAME_ID)); //BYTE_’속성명’은 각 속성별 지정 길이(bytes)이다. stream.write(Arrays.copyOfRange(isolStaDtm.getBytes(), 0, BYTES_ISOL_STA_DTM)); stream.write(Arrays.copyOfRange(isolEndDtm.getBytes(),… Read More »

[펌글] 자바(java) 숫자에 천단위 쉼표(콤마) 찍기

By | 1월 15, 2014

– 출처 : http://mwultong.blogspot.com/2006/11/java-3-comma-commify.html –   import java.text.*; class Foo { public static void main(String args[]) { double num = 29600000; // “이천구백육십만” 이라는 숫자를 대입 DecimalFormat df = new DecimalFormat(“#,##0.00”); System.out.println(df.format(num)); } }   * 실행 결과 29,600,000.00   “#,##0.00” 이런 포맷으로는 항상 소수점 2자리가 반올림되어 나옵니다. “#,##0” 이렇게 하면 소수점 이하가 나오지 않지만, 역시 소수부가… Read More »

Matcher의 find()와 matches() 의 차이점

By | 5월 30, 2013

* find()    – 대상 문자열에서 해당 패턴을 검색하여 일치하는 패턴이 일부라도 존재하면 true를 리턴한다.   – find() 메서드를 수행할 때마다, 문자열 내에서 그 다음 순서의 해당 패턴을 찾는 것 같다. (Iterator처럼)     예를 들어 해당하는 패턴이 한 개만 있다면, 첫 find()의 결과는 true, 두 번째 find()의 결과는 false이다.   – matches()에 비해서 상대적으로 활용도가 높을 것 같다. * matches()… Read More »

StringBuilder 초기화 하기

By | 5월 13, 2013

StringBuilder sb = new StringBuilder(“AAA”); // 초기화 방법 1 – length를 0으로 설정 sb.setLength(0); sb.append(“BBB”); // 초기화 방법 2 – 새로운 객체를 생성하여 재할당 sb = new StringBuilder(“BBB”); * 참고 링크 (이게 좋다, 저게 좋다 의견이 분분하군요 >, <)    http://stackoverflow.com/questions/5192512/how-to-clear-empty-java-stringbuilder

제한되지 않은(unlimited) JCE(Java Cryptographic Extension) 정책(policy) 파일 다운로드

By | 3월 28, 2013

java 암호화/복호화 관련 작업 수행시,Unsupported keysize or algorithm parameters 나 Illegal key size or default parameters 에러가 발생할 경우,JCE(Java Cryptographic Extension)의 정책(policy) 파일 문제일 경우가 많다. JCE의 기본 정책으로 인해 제한된 사항(ex: AES에서 128bit(16byte)를 초과하는 길이의 key 사용불가)을 해제하기 위해서는 jre의 암호화 정책 파일(local_policy.jar  와 US_export_policy.jar)을 무제한(unlimited)버전으로 덮어써 줘야 한다. 문제는 JDK의 벤더 및 종류에 따라 정책 파일이 다르다는 것인데…여러가지가 있지만, 일단… Read More »

java.net.URLEncoder.encode()로 인코딩된 문자열을 java.net.URLDecoder.decode()로 디코딩할 때 + 기호가 space(공백)으로 되어버리는 현상에 대한 해결책

By | 12월 4, 2012

* 이 현상은 get 방식으로 보내는 파라미터의 내용중에 +기호가 있을 경우에 발생하는데,  보통은 + 를 파라미터로 실어 보내는 일이 없지만, Base64로 인코딩된 문자열(ex: 암호화된 id)에는   +가 있을 경우가 종종 있기 때문에 이런 얘들을 get으로 실어 보낼 때 심심치 않게 볼 수 있다.   그래서 해결책을 이것저것 찾아보았지만 결국은 space를 +로 replace하는 것이 대세인 듯 하다.  (아래 예제에서 decodeString()은… Read More »

자바(java)에서 배열(Array)여부를 체크하는 방법

By | 6월 19, 2012

1. 배열객체.getClass().isArray() 사용    – primitive type의 배열에도 사용할 수 있다.   – 객체가 null일 경우 NullPointerException을 발생시킨다. 2. 배열객체 instanceof Object[] 사용    – primitive type의 배열에는 사용할 수 없는 듯 하다.   – 객체가 null일 경우 false를 리턴한다. * 참고 링크    –  http://stackoverflow.com/questions/219881/java-array-reflection-isarray-vs-instanceof