java String字串解析執行個體整理

來源:互聯網
上載者:User

字串解析類

 代碼如下 複製代碼

StringTokenizer tokenizer = new StringTokenizer(number, ",");
        boolean bool = true;
        while (tokenizer.hasMoreTokens()) {
            try {
                Double.valueOf(tokenizer.nextToken());
            } catch (Exception e) {
                bool = false;
            }
        }
//將字串轉化為數組的方法
int gv[];
   int i = 0; 
   StringTokenizer tokenizer = new StringTokenizer(goodsVolume, ",, ");
         gv = new int[tokenizer.countTokens()];//動態決定數組的長度
     while (tokenizer.hasMoreTokens()) {
        String d = tokenizer.nextToken();
        gv[i] = Integer.valueOf(d);//將字串轉換為整型
        i++;
    }
 //字串解析
    private String[] stringAnalytical(String str, String divisionChar) {
        String string[];
       int i = 0; 
        StringTokenizer tokenizer = new StringTokenizer(str, divisionChar);
        string = new String[tokenizer.countTokens()];// 動態決定數組的長度
         while (tokenizer.hasMoreTokens()) {
            string[i] = new String();
            string[i] = tokenizer.nextToken();
            i++;
        }
        return string;// 返回字串數組
    }
 int countTokens() 
          計算在產生異常之前可以調用此 tokenizer 的 nextToken 方法的次數。 
 boolean hasMoreElements() 
          返回與 hasMoreTokens 方法相同的值。 
 boolean hasMoreTokens() 
          測試此 tokenizer 的字串中是否還有更多的可用標記。 
 Object nextElement() 
          除了其聲明傳回值是 Object 而不是 String 之外,它返回與 nextToken 方法相同的值。 
 String nextToken() 
          返回此 string tokenizer 的下一個標記。 
 String nextToken(String delim) 
          返回此 string tokenizer 的字串中的下一個標記。 
public class StringAnalytical {
    // 字串解析,將字串轉根據分割符換成字串數組
    private String[] stringAnalytical(String string, char c) {
        int i = 0;
        int count = 0;
        if (string.indexOf(c) == -1)
            return new String[] { string };// 如果不含分割符則返回字元本身
        char[] cs = string.toCharArray();
        int length = cs.length;
        for (i = 1; i < length - 1; i++) {// 過濾掉第一個和最後一個是分隔字元的情況
            if (cs[i] == c) {
                count++;// 得到分隔字元的個數
            }
        }
        String[] strArray = new String[count + 1];
        int k = 0, j = 0;
        String str = string;
        if ((k = str.indexOf(c)) == 0)// 去掉第一個字元是分隔字元的情況
            str = str.substring(k + 1);
        if (str.indexOf(c) == -1)// 檢測是否含分隔字元,如果不含則返回字串
            return new String[] { str };
        while ((k = str.indexOf(c)) != -1) {// 字串含分割符的時候
            strArray[j++] = str.substring(0, k);
            str = str.substring(k + 1);
            if ((k = str.indexOf(c)) == -1 && str.length() > 0)
                strArray[j++] = str.substring(0);
        }
        return strArray;
    }
    public void printString(String[] s) {
        System.out.println("*********************************");
        for (String str : s)
            System.out.println(str);
    }
    public static void main(String[] args) {
        String[] str = null;
        StringAnalytical string = new StringAnalytical();
        str = string.stringAnalytical("1aaa", '@');
        string.printString(str);
        str = string.stringAnalytical("2aaa@", '@');
        string.printString(str);
        str = string.stringAnalytical("@3aaa", '@');
        string.printString(str);
        str = string.stringAnalytical("4aaa@bbb", '@');
        string.printString(str);
        str = string.stringAnalytical("@5aaa@bbb", '@');
        string.printString(str);
        str = string.stringAnalytical("6aaa@bbb@", '@');
        string.printString(str);
        str = string.stringAnalytical("@7aaa@", '@');
        string.printString(str);
        str = string.stringAnalytical("@8aaa@bbb@", '@');
        string.printString(str);
        str = string.stringAnalytical("@9aaa@bbb@ccc", '@');
        string.printString(str);
        str = string.stringAnalytical("@10aaa@bbb@ccc@eee", '@');
        string.printString(str);
    }
}

常用的字串函數

substring()

它有兩種形式,第一種是:String substring(int startIndex)
第二種是:String substring(int startIndex,int endIndex)

concat() 串連兩個字串

replace() 替換
它有兩種形式,第一種形式用一個字元在調用字串中所有出現某個字元的地方進行替換,形式如下:
String replace(char original,char replacement)
例如:String s=”Hello”.replace(’l',’w');
第二種形式是用一個字元序列替換另一個字元序列,形式如下:
String replace(CharSequence original,CharSequence replacement)

trim() 去掉起始和結尾的空格

valueOf() 轉換為字串

toLowerCase() 轉換為小寫

toUpperCase() 轉換為大寫

length() 取得字串的長度
例:
char chars[]={’a',’b’.’c'};
String s=new String(chars);
int len=s.length();

charAt() 截取一個字元
例:
char ch;
ch=”abc”.charAt(1);
傳回值為’b’

getChars() 截取多個字元
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
sourceStart 指定了子串開始字元的下標
sourceEnd 指定了子串結束後的下一個字元的下標。因此,子串包含從sourceStart到sourceEnd-1的字元。
target 指定接收字元的數組
targetStart target中開始複製子串的下標值
例:
String s=”this is a demo of the getChars method.”;
char buf[]=new char[20];
s.getChars(10,14,buf,0);

getBytes()
替代getChars()的一種方法是將字元儲存在位元組數組中,該方法即getBytes()
例:
String s = “Hello!你好!”;
byte[] bytes = s.getBytes();

toCharArray()
例:
String s = “Hello!你好!”;
char[] ss = s.toCharArray();

equals()和equalsIgnoreCase() 比較兩個字串

regionMatches() 用於比較一個字串中特定地區與另一特定地區,它有一個重載的形式允許在比較中忽略大小寫。
boolean regionMatches(int startIndex,String str2,int
str2StartIndex,int numChars)
boolean regionMatches(boolean ignoreCase,int startIndex,String
str2,int str2StartIndex,int numChars)

startsWith()和endsWith()
startsWith()方法決定是否以特定字串開始,endWith()方法決定是否以特定字串結束

equals()和==
equals()方法比較字串對象中的字元,==運算子比較兩個對象是否引用同一執行個體。
例:String s1=”Hello”;
String s2=new String(s1);
s1.eauals(s2); //true
s1==s2;//false

compareTo()和compareToIgnoreCase() 比較字串

indexOf()和lastIndexOf()
indexOf() 尋找字元或者子串第一次出現的地方。
lastIndexOf() 尋找字元或者子串是後一次出現的地方。

StringBuffer建構函式
StringBuffer定義了三個建構函式:
StringBuffer()
StringBuffer(int size)
StringBuffer(String str)
StringBuffer(CharSequence chars)

下面是StringBuffer相關的函數:
length()和capacity()
一個StringBuffer當前長度可通過length()方法得到,而整個可分配空間通過capacity()方法得到。

ensureCapacity() 設定緩衝區的大小
void ensureCapacity(int capacity)

setLength() 設定緩衝區的長度
void setLength(int len)

charAt()和setCharAt()
char charAt(int where)
void setCharAt(int where,char ch)

getChars()
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)

append() 可把任何類型資料的字串表示串連到調用的StringBuffer對象的末尾。
例:int a=42;
StringBuffer sb=new StringBuffer(40);
String s=sb.append(”a=”).append(a).append(”!”).toString();

insert() 插入字串
StringBuffer insert(int index,String str)
StringBuffer insert(int index,char ch)
StringBuffer insert(int index,Object obj)
index指定將字串插入到StringBuffer對象中的位置的下標。

reverse() 顛倒StringBuffer對象中的字元
StringBuffer reverse()

delete()和deleteCharAt() 刪除字元
StringBuffer delete(int startIndex,int endIndex)
StringBuffer deleteCharAt(int loc)

replace() 替換
StringBuffer replace(int startIndex,int endIndex,String str)

substring() 截取子串
String substring(int startIndex)
String substring(int startIndex,int endIndex

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.