태그 보관물: String

ByteBuffer to String

아래 예는 ByteBuffer를 String으로 변환하는 예제이다.

ByteBuffer buffer = ByteBuffer.allocate(1024);
buffer.put(“aabcde”.getBytes());
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
String s = new String(bytes);
위가 아니라 아래처럼 해야 됩니다. ^^;;

ByteBuffer buffer = ByteBuffer.allocate(1024);
buffer.put(“aabcde”.getBytes());
byte[] bytes = new byte[buffer.position()];
buffer.flip();        
buffer.get(bytes);
String s = new String(bytes);
System.out.println(s);

정규 표현식을 사용하여 HTML 태그 제거하기

먼저 HTML 태그는 < 로 시작해서 > 로 끝나고, 종료 태그의 경우는 </ 로 시작하거나 또는 />로 끝난다.
따라서, 다음과 같은 정규 표현식은 HTML 태그를 모두 포함하게 된다.
<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>

자바 1.4부터 String.repalceAll(String regex, String replacemenet) 메소드를 제공하는데, 이 메소드는 문자열에서 regex의 정규 표현식에 일치하는 부분을 replacement로 바꿔주는 기능을 제공한다.

따라서, 특정 문자열에 HTML 태그를 제거하려면 위의 정규 표현식을 다음과 같이 적용하면 된다.

String text = “……”;
String textWithoutTag = text.replaceAll(“<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>”, “”);  

import java.util.*;
public class Test
{
  public static void main(String[] args)
  {
    String data = ” <a href=”aaa.gif”>”;
    data += “Afdskjhasdkljhaskld” + “</a>”;
    System.out.println( data.replaceAll(“(?:<!–.*?(?:–.*?–\\s*)*.*?–>)|(?:<(?:[^>’\”]*|\”.*?\”|’.*?’)+>)”,””) );
  }
}

String 인코딩 변경

String data = “데이타”; 
String utf8 = new String(data.getBytes(“UTF-16“), “UTF-8“);
String utf16 = new String(data.getBytes(“UTF-8“), “UTF-16“);

표준 캐릭터셋


Java 플랫폼의 구현은 모두 다음의 표준 캐릭터셋를 지원 할 필요가 있습니다. 지원 되고 있는 그 외의 캐릭터셋에 대해서는 구현의 릴리스 노트를 참조하십시오. 그러한 옵션의 캐릭터셋의 동작은 구현 마다 다를 가능성이 있습니다.

























캐릭터셋


설명

US-ASCII 7 비트 ASCII (ISO646-US/Unicode 캐릭터셋의 Basic Latin 블록)
ISO-8859-1   ISO Latin Alphabet No. 1 (ISO-LATIN-1)
UTF-8 8 비트 UCS 변환 형식
UTF-16BE 16 비트 UCS 변환 형식, 빅 endian 바이트순서
UTF-16BE 16 비트 UCS 변환 형식, little endian 바이트순서
UTF-16 16 비트 UCS 변환 형식, 옵션의 바이트순서 마크로 식별되는 바이트순서

String, StringBuffer, StringBuilder 선택 기준

헐.. 출처는 http://www.mimul.com/pebble/default/2007/11/26/1196088660000.html 입니다..

아주 기본적이지만 잊기 쉽기 때문에 선택 기준을 적어봅니다. 실력은 아주 기본적인 곳에서 시작되죠. ^^

1.
String 객체는 불변이기 때문에 변하지 않는 문자열은 String을 사용한다.
2.
StringBuilder는 비동기방식이기 때문에 Single Thread 환경하에서, 변화되는 문자열의
사용한다.
3. StringBuffer 동기방식으로 저장되기 때문에 멀티쓰레드로 접근하거나 문자열이 변경될
경우에 사용한다.