📄 utility.java
字号:
package com.gt.mobile;
import java.util.Date;
import java.util.Vector;
import javax.microedition.lcdui.Font;
import javax.microedition.rms.RecordStore;
public class Utility {
/*public static Vector getSplitVector(String content, String separator) {
String myString = new String(content);
Vector list = new Vector();
int occurAt = 0;
int nextAt = -1;
while ((nextAt = myString.indexOf(separator)) >= 0) {
list.addElement(myString.substring(occurAt, nextAt));
myString = myString.substring(nextAt + separator.length(), myString.length());
}
list.addElement(myString);
return list;
}*/
public static String[] split(String content,String separator,int number){
Vector v=new Vector();
int occurAt = 0;
int nextAt = -1;
int numberCount=0;
while ((nextAt = content.indexOf(separator)) >= 0) {
v.addElement(content.substring(occurAt, nextAt));
content = content.substring(nextAt + separator.length(), content.length());
if(number>0){
numberCount++;
if(numberCount>=number){
break;
}
}
}
v.addElement(content);
String[] ss=new String[v.size()];
v.copyInto(ss);
return ss;
}
public static String esacpe(String s) {
StringBuffer sbuf = new StringBuffer();
int len = s.length();
for (int i = 0; i < len; i++) {
int ch = s.charAt(i);
if ('A' <= ch && ch <= 'Z') { // 'A'..'Z'
sbuf.append((char) ch);
} else if ('a' <= ch && ch <= 'z') { // 'a'..'z'
sbuf.append((char) ch);
} else if ('0' <= ch && ch <= '9') { // '0'..'9'
sbuf.append((char) ch);
} else if (ch == '-' || ch == '_' || ch == '.' || ch == '!' || ch == '~' || ch == '*' || ch == '\'' || ch == '(' || ch == ')') { // unreserved
sbuf.append((char) ch);
} else if (ch == ' ') { // space
sbuf.append('+');
} else if (ch <= 0x007f) { // other ASCII
sbuf.append("%").append(Integer.toHexString(ch));
} else if (ch <= 0x07FF) { // non-ASCII <= 0x7FF
sbuf.append("%").append(Integer.toHexString(0xc0 | (ch >> 6)));
sbuf.append("%").append(Integer.toHexString(0x80 | (ch & 0x3F)));
} else { // 0x7FF < ch <= 0xFFFF
sbuf.append("%").append(Integer.toHexString(0xe0 | (ch >> 12)));
sbuf.append("%").append(Integer.toHexString(0x80 | ((ch >> 6) & 0x3F)));
sbuf.append("%").append(Integer.toHexString(0x80 | (ch & 0x3F)));
}
}
return sbuf.toString();
}
public static String replaceString( String origin, String src, String dest )
{
if( origin==null ) return null;
StringBuffer sb = new StringBuffer( origin.length() );
int srcLength = src.length();
int destLength = dest.length();
int preOffset = 0;
int offset = 0;
while( (offset=origin.indexOf( src, preOffset ))!=-1 )
{
sb.append( origin.substring( preOffset,offset ) );
sb.append( dest );
preOffset = offset + srcLength;
}
sb.append( origin.substring( preOffset, origin.length() ) );
return sb.toString();
}
public static String replaceString(String origin,String[] srcs,String[] dests){
String result=origin;
for(int i=0;i<srcs.length;i++){
result=replaceString(result,srcs[i],dests[i]);
}
return result;
}
//转义字符集,补充中
public static final String[] TRANS_CHARS={" ", ">", "<", "\""};
public static final String[] TRANS_ESCS={" ",">","<","""};
public static String replaceCharToEsc(String s){
return replaceString(s,TRANS_CHARS,TRANS_ESCS);
}
public static String replaceEscToChar(String s){
return replaceString(s,TRANS_ESCS,TRANS_CHARS);
}
///
public static int findEqualIndex(String find,String[] srcs){
int index=-1;
for(int i=0;i<srcs.length;i++){
if(find.equals(srcs[i])){
index=i;
break;
}
}
return index;
}
public static String replace(String input, String oldStr, String newStr) {
String s = new String(input);
int pos = s.indexOf(oldStr);
while (pos != -1) {
s = s.substring(0, pos) + newStr + s.substring(pos + oldStr.length());
pos = s.indexOf(oldStr, pos + newStr.length());
}
return s;
}
/**
* splits the URL in the parts E.g:
* http://www.12fb.com:80/Media/MIDI/fb.mid#1
*
* 0: protocol (e.g. http) 1: host (e.g. www.12fb.com) 2: port (e.g. 80) 3:
* path (e.g. /Media/MIDI) 4: file (e.g. fb.mid) 5: anchor (e.g. 1)
*
* LIMITATION: URL must end with a slash if it is a directory
*/
public static String[] splitURL(String url) throws Exception {
StringBuffer u = new StringBuffer(url);
String[] result = new String[6];
for (int i = 0; i <= 5; i++) {
result[i] = "";
}
// get protocol
// boolean protFound = false;
int index = url.indexOf(":");
if (index > 0) {
result[0] = url.substring(0, index);
u.delete(0, index + 1);
// protFound = true;
} else if (index == 0) {
throw new Exception("url format error - protocol");
}
// check for host/port
if (u.length() > 2 && u.charAt(0) == '/' && u.charAt(1) == '/') {
// found domain part
u.delete(0, 2);
int slash = u.toString().indexOf('/');
if (slash < 0) {
slash = u.length();
}
int colon = u.toString().indexOf(':');
int endIndex = slash;
if (colon >= 0) {
if (colon > slash) {
throw new Exception("url format error - port");
}
endIndex = colon;
result[2] = u.toString().substring(colon + 1, slash);
}
result[1] = u.toString().substring(0, endIndex);
u.delete(0, slash);
}
// get filename
if (u.length() > 0) {
url = u.toString();
int slash = url.lastIndexOf('/');
if (slash > 0) {
result[3] = url.substring(0, slash);
}
if (slash < url.length() - 1) {
String fn = url.substring(slash + 1, url.length());
int anchorIndex = fn.indexOf("#");
if (anchorIndex >= 0) {
result[4] = fn.substring(0, anchorIndex);
result[5] = fn.substring(anchorIndex + 1);
} else {
result[4] = fn;
}
}
}
return result;
}
public static String[] getAllTags(String src){
if(src==null)
return null;
// StringBuffer sb=new StringBuffer(src.length());
String[] ss=null;
Vector v=new Vector();
int preOffset=0;
int offset=0;
int endIndex=0;
int tagStart='<';
int tagEnd='>';
while((offset=src.indexOf(tagStart, preOffset))!=-1){
// System.out.println("<<<<<");
// System.out.println("preOffset:"+preOffset+" offset:"+offset);
String tagString=null;
// int tagLength=0;
int endOffset=0;
int innerOffset=0;
if((endOffset=src.indexOf(tagEnd,offset))!=-1){
endIndex=endOffset;
tagString=src.substring(offset, endOffset+1);
while((innerOffset=tagString.indexOf(tagStart,1))!=-1){
tagString=tagString.substring(innerOffset);
}
// tagLength=tagString.length();
preOffset=endIndex+1;
v.addElement(tagString);
}
else{
break;
}
// System.out.println(">>>>>");
}
ss=new String[v.size()];
v.copyInto(ss);
return ss;
}
public static final void println(String message){
// if(IPIMMIDlet.PROPERTY_utilityPrint)
System.out.println(new Date()+" "+message);
}
public static final String getTwoTagContent(String src,String leftTag,String rightTag){
String result=null;
int leftI=src.indexOf(leftTag);
int rightI=src.indexOf(rightTag);
result=src.substring(leftI+leftTag.length(), rightI);
return result;
}
public static final Vector getSubsection(String strSource, Font font, int width, String strSplit) {
Vector vector = new Vector();
String temp = strSource;
int i, j;
int LastLength = 1;
int step = 0;
try {
while (!temp.equals("")) {
i = temp.indexOf("\n");
if (i > 0) {
if (font.stringWidth(temp.substring(0, i - 1)) >= width) {
i = -1;
}
}
if (i == -1) {
if (LastLength > temp.length()) {
i = temp.length();
} else {
i = LastLength;
step = font.stringWidth(temp.substring(0, i)) > width ? -1 : 1;
// 得到临界点
if (i < temp.length()) {
while (!(font.stringWidth(temp.substring(0, i)) <= width && font.stringWidth(temp.substring(0, i + 1)) > width)) {
i = i + step;
if (i == temp.length())
break;
}
}
}
// 断词,如果需要的话
if (!strSplit.equals("")) {
j = i; // 把初始值记录下来,是因为有可能出现一种情况,这种情况就是这一行只有这么一个单词,会一直搜索到头
if (i < temp.length()) {
while (strSplit.indexOf(temp.substring(i - 1, i)) == -1) {
i--;
if (i == 0) {
i = j; // 恢复
break;
}
}
}
}
}
LastLength = i;
vector.addElement(Utility.replace(Utility.replace(temp.substring(0, i),"\n",""), "\r", ""));
if (i == temp.length()) {
temp = "";
} else {
temp = temp.substring(i);
if (temp.substring(0, 1).equals("\n")) {
temp = temp.substring(1);
}
}
}
} catch (Exception e) {
System.out.println("getSubsection:" + e);
}
return vector;
}
public static final void saveInfo(String message,RecordStore recordStore){
}
public static final String[] MONTHS={"Jan", "Feb" ,"Mar", "Apr" ,"May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -