XML ÀÇ CDATA ó·³ ¹®ÀÚ¿µéÀ» ƯÁ¤ ű׷Π°¨½Ò°æ¿ì
°¨½Î´Â ű׸¸ »èÁ¦ÄÚÀÚ ÇÒ·Á°í Çߴµ¥
replaceAll Àº ÁöÁ¤µÈ ¹®ÀÚ¿ ¹Û¿¡ ¾ÈµÇ¼ ¸¸µé¾î ºÃ´Âµ¥
´õ ±¦ÂúÀº ¹æ¹ýÀÌ ÀÖÀ»±î¿ä?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class ReplaceByRegExp
{
public static void main( String[] args )
{
String text = "<![CDATA[ ]]>abcd<![CDATA[ ]]>dafasf";
ReplaceByRegExp rbre = new ReplaceByRegExp();
System.out.println( rbre.replaceAll( "<![CDATA[", "]]>", text ) );
}
/**
* À¯´ÏÄÚµå ¸®ÅÏ
*
* @param text
* À¯´ÏÄÚµå·Î º¯È¯ÇÒ ¹®ÀÚ¿
* @return À¯´ÏÄÚµå
*/
private String getUnicodeForRegExp( String text )
{
String temp = null;
StringBuffer sb = new StringBuffer();
for( int i = 0; i < text.length(); i++ )
{
temp = Integer.toHexString( (int) text.charAt( i ) ).toUpperCase();
sb.append( "\\u" );
if( temp.length() != 4 )
sb.append( "00" ).append( temp );
else
sb.append( temp );
}
return sb.toString();
}
/**
* ½ÃÀÛ ¹®ÀÚ¿°ú Á¾·á ¹®ÀÚ¿À» Á¦°ÅÇÏ°í ¾È¿¡ ³»¿ë¸¸À» º¸Á¸
*
* @param startText
* °Ë»ö ½ÃÀÛ ¹®ÀÚ¿
* @param endText
* °Ë»ö Á¾·á ¹®ÀÚ¿
* @param text
* °Ë»ö ´ë»ó ¹®ÀÚ¿
* @return ġȯµÈ ¹®ÀÚ¿
*/
public String replaceAll( String startText, String endText, String text )
{
// Á¤±Ô½Ä »ý¼º
StringBuffer regExp = new StringBuffer();
regExp.append( this.getUnicodeForRegExp( startText ) ).append( "(.*?)" )
.append( this.getUnicodeForRegExp( endText ) );
// Á¤±Ô½Ä ¼ÂÆÃ
Pattern p = Pattern.compile( regExp.toString() );
Matcher m = p.matcher( text );
// °Ë»öµÈ ¹®ÀÚ¿ ÀúÀå º¯¼ö
String temp = null;
StringBuffer sb = new StringBuffer();
while( m.find() )
{
temp = m.group();
m.appendReplacement( sb, temp.substring( startText.length(),
temp.length() - endText.length() ).trim() );
}
m.appendTail( sb );
return sb.toString();
}
}
°á°ú : abcd dafasf