StringUtils.java
上传用户:toby834
上传日期:2013-10-21
资源大小:2613k
文件大小:7k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. package net.acai.util;
  2. /**
  3.  * Title:        清清网络
  4.  * Description:
  5.  * Copyright:    Copyright (c) 2002
  6.  * Company:      www.SuperSpace.com
  7.  * @author:       SuperSpace
  8.  * @version 1.0
  9.  */
  10. /**
  11.  * Title:        清清网络
  12.  * Description:
  13.  * Copyright:    Copyright (c) 2002
  14.  * Company:     http://xSuperSpace.yeah.net
  15.  * @author  SuperSpace
  16.  * @version 1.0
  17.  */
  18. import java.text.*;
  19. import java.util.*;
  20. public class StringUtils {
  21.     // 转化html的常量;
  22.     private static final char[] QUOTE_ENCODE = """.toCharArray();
  23.     private static final char[] AMP_ENCODE = "&".toCharArray();
  24.     private static final char[] LT_ENCODE = "<".toCharArray();
  25.     private static final char[] GT_ENCODE = ">".toCharArray();
  26.     private static final char[] APOS_ENCODE = "'".toCharArray();
  27. private static final char[] BR_TAG = "<BR>".toCharArray();
  28.     /**
  29.      * 初始化,并且锁定一个类只能调用
  30.      * 
  31.      */
  32.     private static Object initLock = new Object();
  33.     /**
  34.      * 替代linde中的oldString为newString
  35.      *
  36.      * @参数 line 需要做替代的字符串
  37.      * @参数 oldString the String that should be replaced by newString
  38.      * @param newString the String that will replace all instances of oldString
  39.      *
  40.      * @return a String will all instances of oldString replaced by newString
  41.      */
  42.     public static final String replace( String line, String oldString, String newString )
  43.     {
  44.         if (line == null) {
  45.             return null;
  46.         }
  47.         int i=0;
  48.         if ( ( i=line.indexOf( oldString, i ) ) >= 0 ) {
  49.             char [] line2 = line.toCharArray();
  50.             char [] newString2 = newString.toCharArray();
  51.             int oLength = oldString.length();
  52.             StringBuffer buf = new StringBuffer(line2.length);
  53.             buf.append(line2, 0, i).append(newString2);
  54.             i += oLength;
  55.             int j = i;
  56.             while( ( i=line.indexOf( oldString, i ) ) > 0 ) {
  57.                 buf.append(line2, j, i-j).append(newString2);
  58.                 i += oLength;
  59.                 j = i;
  60.             }
  61.             buf.append(line2, j, line2.length - j);
  62.             return buf.toString();
  63.         }
  64.         return line;
  65.     }
  66.  
  67.     /**
  68.      * This method takes a string which may contain HTML tags (ie, &lt;b&gt;,
  69.      * &lt;table&gt;, etc) and converts the '&lt'' and '&gt;' characters to
  70.      * their HTML escape sequences.
  71.      *
  72.      * @param in the text to be converted.
  73.      * @return the input string with the characters '&lt;' and '&gt;' replaced
  74.      *  with their HTML escape sequences.
  75.      */
  76.     public static final String escapeHTMLTags(String in) {
  77.         if (in == null) {
  78.             return null;
  79.         }
  80.         char ch;
  81.         int i=0;
  82.         int last=0;
  83.         char[] input = in.toCharArray();
  84.         int len = input.length;
  85.         StringBuffer out = new StringBuffer((int)(len*1.3));
  86.         for (; i < len; i++) {
  87.             ch = input[i];
  88.             if (ch > '>') {
  89.                 continue;
  90.             } else if (ch == '<') {
  91.                 if (i > last) {
  92.                     out.append(input, last, i - last);
  93.                 }
  94.                 last = i + 1;
  95.                 out.append(LT_ENCODE);
  96.             } else if (ch == '>') {
  97.                 if (i > last) {
  98.                     out.append(input, last, i - last);
  99.                 }
  100.                 last = i + 1;
  101.                 out.append(GT_ENCODE);
  102.             }
  103.         }
  104.         if (last == 0) {
  105.             return in;
  106.         }
  107.         if (i > last) {
  108.             out.append(input, last, i - last);
  109.         }
  110.         return out.toString();
  111.     }
  112. public static String convertNewlines(String input) {
  113.         char [] chars = input.toCharArray();
  114.         int cur = 0;
  115.         int len = chars.length;
  116.         StringBuffer buf = new StringBuffer(len);
  117.         // Loop through each character lookin for newlines.
  118.         for (int i=0; i<len; i++) {
  119.             // If we've found a Unix newline, add BR tag.
  120.             if (chars[i]=='n') {
  121.                 buf.append(chars, cur, i-cur).append(BR_TAG);
  122.                 cur = i+1;
  123.             }
  124.             // If we've found a Windows newline, add BR tag.
  125.             else if (chars[i]=='r' && i<len-1 && chars[i+1]=='n') {
  126.                 buf.append(chars, cur, i-cur).append(BR_TAG);
  127.                 i++;
  128.                 cur = i+1;
  129.             }
  130.         }
  131.         // Add whatever chars are left to buffer.
  132.         buf.append(chars, cur, len-cur);
  133.         return buf.toString();
  134.     }
  135. public static String  getTranslateStr(String sourceStr,String fieldStr){
  136. //处理逻辑表达式的转化问题
  137.   String []  sourceList;
  138.   String resultStr="";
  139.   //dim i,j
  140.   if (sourceStr.indexOf(" ")>0){ 
  141.  boolean isOperator=true;
  142.  sourceList=sourceStr.split(" ");
  143.  //'--------------------------------------------------------
  144.  //rem Response.Write "num:" & cstr(ubound(sourceList)) & "<br>"
  145. for(int i=0;i<sourceList.length;i++){
  146.  if(sourceList[i].equals("AND")||sourceList[i].equals("&")||sourceList[i].equals("和")||sourceList[i].equals("与")){
  147.     resultStr=resultStr+" and ";
  148.  isOperator=true;
  149.  }
  150.  else if(sourceList[i].equals("OR")||sourceList[i].equals("|")||sourceList[i].equals("或")){
  151.   resultStr=resultStr + " or ";
  152. isOperator = true;
  153.  }
  154.  else if(sourceList[i].equals("NOT")||sourceList[i].equals("!")||sourceList[i].equals("!")||sourceList[i].equals("非")){
  155.   resultStr=resultStr + " not ";
  156. isOperator = true;
  157.  }
  158.  else if(sourceList[i].equals("(")||sourceList[i].equals("(")||sourceList[i].equals("(")){
  159. resultStr=resultStr + " ( ";
  160. isOperator = true;
  161.  }
  162.  else if(sourceList[i].equals(")")||sourceList[i].equals(")")||sourceList[i].equals(")")){
  163. resultStr=resultStr + " ) ";
  164. isOperator = true;
  165.  }
  166.  else{
  167. if(!"".equals(sourceList[i])){
  168. if (!isOperator)
  169. {
  170. resultStr=resultStr + " and ";
  171. }
  172. if (sourceList[i].indexOf("%")>0)
  173. {
  174. resultStr=resultStr+" "+fieldStr+ " like '" + sourceList[i].replaceAll("'","''") + "' ";
  175. else
  176. resultStr=resultStr+" "+fieldStr+ " like '%" + sourceList[i].replaceAll("'","''") + "%' ";
  177. isOperator=false;
  178. }
  179.  }
  180. }
  181. return resultStr;
  182.   }
  183.   else{
  184. if (sourceStr.indexOf("%")>0)
  185. {
  186. resultStr=resultStr+" "+fieldStr+ " like '" + sourceStr.replaceAll("'","''") + "' ";
  187. else
  188. resultStr=resultStr+" "+fieldStr+ " like '%" + sourceStr.replaceAll("'","''") + "%' ";
  189. return resultStr;
  190.   }
  191.  
  192. }
  193. }