在编写J2ME程序时,我们尝尝要操作字符串,而原本在J2SE里面提供了很多String的操作方法,在J2ME里面是没有的,这些方法我们得自己手动去写。我整理了一下我常用的字符串操作方法:
1.URLEncode(String url)方,对字符串的特殊字符进行编码,这个方法用的非常平凡,我们的HttpConnection请求必须要用到这个方法。
2.split(String s, int chr),这个方法用于分割字符串,返回一个字符串数组,当某些数据以特定的字符做间隔时,我们取出数据尝尝要用到这个方法。3.replaceAll(String from, String to, String source),这个方法是用来替换字符串中的子串的,比如:replaceAll("aaa","","aaabbbcccaaa")把字符串"aaabbbccc"中的所有"aaa"替换成空字符串,结果就是"bbbccc"。
4.StringFilter(String str),这个方法是用来过滤某些字符的。
代码
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package test; import java.util.Vector; /** * * @author Administrator */ public class StringUtil { /** * URLEncode对特殊字符进行编码 * @param url * @return */ public static String URLEncode(String url) { StringBuffer buf = new StringBuffer(); for ( int i = 0 ; i < url.length(); i ++ ) { switch (url.charAt(i)) { case ' ' : buf.append( " %20 " ); break ; case ' + ' : buf.append( " %2b " ); break ; case ' \ '' : buf.append( " %27 " ); break ; case ' / ' : buf.append( " %2F " ); break ; case ' . ' : buf.append( " %2E " ); break ; case ' < ' : buf.append( " %3C " ); break ; case ' > ' : buf.append( " %3E " ); break ; case ' # ' : buf.append( " %23 " ); break ; case ' % ' : buf.append( " %25 " ); break ; case ' & ' : buf.append( " %26 " ); break ; case ' { ' : buf.append( " %7B " ); break ; case ' } ' : buf.append( " %7D " ); break ; case ' \\ ' : buf.append( " %5C " ); break ; case ' ^ ' : buf.append( " %5E " ); break ; case ' ~ ' : buf.append( " %73 " ); break ; case ' [ ' : buf.append( " %5B " ); break ; case ' ] ' : buf.append( " %5D " ); break ; default : buf.append(url.charAt(i)); break ; } } return buf.toString(); } /** * 把String以一个char为分割点,拆分成String数组 * @param s * @param chr * @return */ public static String[] split(String s, int chr) { Vector res = new Vector(); int curr; int prev = 0 ; while ((curr = s.indexOf(chr, prev)) >= 0 ) { res.addElement(s.substring(prev, curr)); prev = curr + 1 ; } res.addElement(s.substring(prev)); String[] splitted = new String[res.size()]; res.copyInto(splitted); return splitted; } /** * 字符串替换 * @param from * 字符串中要被替换的子串 * @param to * 替换子串的字符串 * @param source * 被操作的字符串 * @return */ public static String replaceAll(String from, String to, String source) { if (source == null || from == null || to == null ) { return null ; } StringBuffer bf = new StringBuffer(); int index = - 1 ; while ((index = source.indexOf(from)) != - 1 ) { bf.append(source.substring( 0 , index) + to); source = source.substring(index + from.length()); index = - 1 ; } bf.append(source); return bf.toString(); } /** * 字符串过滤 * 过滤掉诸如<html>这样的标签,获取其中的文本。 * 例如 str = <html>文本区域</html>,传的时候传一个节点过来(一对封闭标签) * @param str * @return */ public static String StringFilter(String str) { String now = str; int start = 0 ; int end = 0 ; for ( int i = 0 ; i < now.length(); i ++ ) { // '\u003C','\u003E' = <> if (now.charAt(i) == ' \u003C ' ) { start = i; } if (now.charAt(i) == ' \u003E ' ) { end = i; } if (start != - 1 && end != - 1 ) { String sub = now.substring(start, end + 1 ); str = StringUtil.replaceAll(sub, "" , str); start = 0 ; end = 0 ; } } return str; }}