字符串處理java
在Java中最常將字符串做爲String類型對象來處理。同時String中也提供了不少操做字符串的函數(可自行查閱資料),而本篇將介紹StringBuffer如何操做字符串。數組
StringBuffer是使用緩衝區的,自己也是操做字符串的,但與String類不一樣,String類中的內容一旦聲明以後不可改變,改變的只是其內存地址的指向,而StringBuffer中的內容是能夠改變的,app
對於StringBuffer而言,自己是一個具體的操做類,因此不能像String那樣採用直接賦值的方式進行對象實例化,必須經過構造方法完成。函數
StringBuffer鏈接字符操做this
實例操做一:字符串鏈接操做(append)spa
代碼:code
package 字符串處理; public class StringBufferDemo01{ public static void main(String args[]){ StringBuffer buf = new StringBuffer() ; // 聲明StringBuffer對象 buf.append("Hello ") ; // 向StringBuffer中添加內容 buf.append("World").append("!!!") ; // 能夠連續調用append()方法 buf.append("\n") ; // 添加一個轉義字符 buf.append("數字 = ").append(1).append("\n") ; // 添加數字 buf.append("字符 = ").append('C').append("\n"); // 添加字符 buf.append("布爾 = ").append(true) ; // 添加布爾值 System.out.println(buf) ; // 直接輸出對象,調用toString() } };
打印結果:orm
Hello World!!! 數字 = 1 字符 = C 布爾 = true
實例操做二:字符串添加內容(insert)對象
public class StringBufferDemo03{ public static void main(String args[]){ StringBuffer buf = new StringBuffer() ; // 聲明StringBuffer對象 buf.append("World!!") ; // 添加內容 buf.insert(0,"Hello ") ; // 在第一個內容以前添加內容 System.out.println(buf) ; buf.insert(buf.length(),"偶my耶~") ; // 在最後添加內容 System.out.println(buf) ; } };
打印內容blog
Hello World!!
Hello World!!偶my耶~
實例操做三:字符串反轉(reverse)
package 字符串處理; public class StringBufferDemo04{ public static void main(String args[]){ StringBuffer buf = new StringBuffer() ; // 聲明StringBuffer對象 buf.append("World!!") ; // 添加內容 buf.insert(0,"Hello ") ; // 在第一個內容以前添加內容 String str = buf.reverse().toString() ; // 將內容反轉後變爲String類型 System.out.println(str) ; // 將內容輸出 } };
打印內容:
!!dlroW olleH
實例操做四:替換字符串指定內容(replace)
public class StringBufferDemo05{ public static void main(String args[]){ StringBuffer buf = new StringBuffer() ; // 聲明StringBuffer對象 buf.append("Hello ").append("World!!") ; // 向StringBuffer添加內容 buf.replace(6,11,"偶my耶") ; // 將world的內容替換 System.out.println("內容替換以後的結果:" + buf) ; // 輸出內容 } };
打印內容:
內容替換以後的結果:Hello 偶my耶!!
實例操做五:字符串截取(substring,delete)
package 字符串處理; public class StringBufferDemo06{ public static void main(String args[]){ StringBuffer buf = new StringBuffer() ; // 聲明StringBuffer對象 buf.append("Hello ").append("World!!") ; // 向StringBuffer添加內容 buf.replace(6,11,"偶my耶") ; // 將world的內容替換 String str = buf.substring(6,11) ; // 截取指定範圍的內容 // String str = buf.delete(6,11).toString() ;// 刪除指定範圍中的內容 System.out.println(buf); System.out.println("內容替換以後的結果:" + str) ; // 輸出內容 } };
打印結果
Hello 偶my耶!!
內容替換以後的結果:偶my耶!
實例操做六:查找指定內容(indexOf)
package 字符串處理; public class StringBufferDemo08{ public static void main(String args[]){ StringBuffer buf = new StringBuffer() ; // 聲明StringBuffer對象 buf.append("Hello ").append("World!!") ; // 向StringBuffer添加內容 if(buf.indexOf("Hello")==-1){ System.out.println("沒有查找到指定的內容") ; }else{ // 不爲01表示查找到內容 System.out.println("能夠查找到指定的內容") ; } } };
打印內容
能夠查找到指定的內容
在StringBuffer中還有許多的函數就不一一介紹了!想要更深去了解可查閱相關資料,
下面介紹一個使用String和StringBuffer來操做字符串的案列
案列之小寫金額變大寫金額
package com.lh.bean; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StringUtil { private String money; //轉換以前的數字金額 private String submoneyCN[]={"","拾","佰","仟"}; //表示數字位數的數組 private String numberCNN[]={"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"}; //大寫數字的數組 private String je="零壹貳叄肆伍陸柒捌玖"; //大寫的數字(0-9) private String cdw="萬仟佰拾億仟佰拾萬仟佰拾元角分"; //金額單位 public StringUtil(){} //默認的構造方法 public void setMoney(String money){ this.money=money; } public String getMoney(){ return convert(this.money); } /** * 轉換數字金額爲大寫金額 * @return 返回轉換後的大寫金額 */ public String convert(String money){ String formatCN=""; int point=money.indexOf("."); //判斷字符串是否包含小數點 if(point!=-1){ String money1=money.substring(0,point); //小數點以前的部分 String money1_1=(new StringBuffer(money1).reverse()).toString();//字符串倒序 String money2=money.substring(point+1); //小數點以後的部分 if(money2.length()<2){ //若是小數點後的部分少於兩位,用"0"補齊 if(money2.length()==0) money2="00"; else money2+="0"; } else //若是小數點後的位數大於2位,則只前2位 money2=money.substring(point+1,point+3); int len = money1_1.length(); //字符串反轉以後,小數點以前的字符位數 int pos=len-1; String sigle=""; boolean allhavenum=false; boolean havenum=false; boolean mark=false; //設置一個開關變量,若當前數爲"0",將該值設爲true;不爲"0"時設爲false /**如下代碼爲讀出小數點左面的部分*/ while(pos>=0){ sigle=money1_1.substring(pos,pos+1);//截取1位數字,好比數字1234.56,將左側的字符串反轉,值爲4321,則截取的值爲1 /**讀取「億單元」的代碼。 * 假設讀取10024531042.34。 * 小數點左面反轉後爲:24013542001 * pos的初始值爲10 * mark的初始值爲false * havenum的初始值爲false * */ if(pos>=8&&pos<12){ if(!sigle.equals("0")){ //若是當前值不爲"0" if(!mark){ //若是當前值的前一位數不爲"0" formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4]; } else{ //若是當前值不爲"0",但該值的前一位數爲"0" if(allhavenum){ //若是在當前值以前有不爲"0"的數字出現。該條件用來處理用戶輸入的如:0012.34的數值 formatCN+="零"; } formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4]; mark=false; } havenum=true; allhavenum=true; //變量allhavenum表示小數點左面的數中是否有不爲"0"的數字;true表示有,false表示無 } else{ //若是當前值爲"0" mark=true; } if(pos%4==0&&havenum){ //若是當前數字爲該單元的最後一位,而且該單元中有不爲"0"的數字出現 formatCN+="億"; havenum=false; } } /**讀取「萬單元」的代碼*/ if(pos>=4&&pos<8){ if(!sigle.equals("0")){ if(!mark) formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4]; else{ if(allhavenum){ formatCN+="零"; } formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4]; mark=false; } havenum=true; allhavenum=true; } else{ mark=true; } if(pos%4==0&&havenum){ formatCN+="萬"; havenum=false; } } /**讀取「個、10、百、千」的代碼*/ if(pos>=0&&pos<4){ if(!sigle.equals("0")){ if(!mark) formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4]; else{ if(allhavenum){ formatCN+="零"; } formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4]; mark=false; } havenum=true; allhavenum=true; } else{ mark=true; } } pos--; } /**碰到小數點時的讀法*/ if(allhavenum) //如:00.34就不能讀爲:元3角4分.變量allhavenum表示小數點左面的內容中是否有數字出現 formatCN+="元"; else //若是小數點左面的部分都爲0如:00.34應讀爲:零元3角4分 formatCN="零元"; /**如下代碼爲讀出小數點右面的部分 */ if(money2.equals("00")) formatCN+="整"; else{ /**讀出角,如120.34讀爲:1佰2拾元零3角4分;123.04讀爲:1佰2拾3元零4分*/ if(money2.startsWith("0")||(allhavenum&&money1.endsWith("0"))){ formatCN+="零"; } if(!money2.startsWith("0")){ formatCN+=numberCNN[Integer.parseInt(money2.substring(0,1))]+"角"; } //讀出分,如:12.30讀1拾2元3角零分 formatCN+=numberCNN[Integer.parseInt(money2.substring(1))]+"分"; } } else{ formatCN="輸入的格式不正確!格式:888.00"; } return formatCN; } public static void main(String[] args) throws IOException { System.out.println("輸入要轉換的金錢:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String money = br.readLine(); StringUtil SU= new StringUtil(); System.out.println(SU.convert(money)); } }