xmlstringfilter.java

来自「短信系统SMS:支持普通短信、长短信和wap push短信的发送。」· Java 代码 · 共 134 行

JAVA
134
字号
package com.ekun.common.util;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author ekun
 * @version 1.0
 */
public class XMLStringFilter
{
  public static final char AND_CHAR = '&';
  public static final char LEFT_CHAR = '<';
  public static final char AND_CHAR_REPLACEMENT = 249; //the ascii code of letter ù
  public static final char LEFT_CHAR_REPLACEMENT = 250; //the ascii code of letter ú

  /**
   * constructor
   */
  private XMLStringFilter()
  {
  }

  /**
   * replace the related character
   * @param source
   * @return
   */

  public static String replace(String source)
  {
    if (source == null || source.length() == 0)
    {
      return source;
    }
    int len = source.length();
    char[] val = new char[len];
    source.getChars(0, len, val, 0);
    int i = -1;
    while (++i < len)
    {
      if (val[i] == AND_CHAR || val[i] == LEFT_CHAR)
      {
        break;
      }
    }
    if (i < len)
    {
      char buf[] = new char[len];
      for (int j = 0; j < i; j++)
      {
        buf[j] = val[j];
      }
      while (i < len)
      {
        char c = val[i];
        if (c == AND_CHAR)
        {
          buf[i] = AND_CHAR_REPLACEMENT;
        }
        else if (c == LEFT_CHAR)
        {
          buf[i] = LEFT_CHAR_REPLACEMENT;
        }
        else
        {
          buf[i] = c;
        }
        i++;
      }
      return new String(buf);
    }
    return source;
  }

  /**
   * restitute the related character
   * @param source
   * @return
   */

  public static String restitute(String source)
  {
    if (source == null || source.length() == 0)
    {
      return source;
    }
    int len = source.length();
    char[] val = new char[len];
    source.getChars(0, len, val, 0);
    int i = -1;
    while (++i < len)
    {
      if (val[i] == AND_CHAR_REPLACEMENT ||
          val[i] == LEFT_CHAR_REPLACEMENT)
      {
        break;
      }
    }
    if (i < len)
    {
      char buf[] = new char[len];
      for (int j = 0; j < i; j++)
      {
        buf[j] = val[j];
      }
      while (i < len)
      {
        char c = val[i];
        if (c == AND_CHAR_REPLACEMENT)
        {
          buf[i] = AND_CHAR;
        }
        else if (c == LEFT_CHAR_REPLACEMENT)
        {
          buf[i] = LEFT_CHAR;
        }
        else
        {
          buf[i] = c;
        }
        i++;
      }
      return new String(buf);
    }
    return source;
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?