1. 程式人生 > >Java String字串處理和字元處理

Java String字串處理和字元處理

字串類Sring

  字串時由字元構成的一個序列,在JAVA中,字串是一個物件 1、字串的構造 1)從字串直接量建立一個字串   String 字串名 = new String(字串直接量)  如:String str = new String(”welcome to java“); 2)將字串直接量看成String物件   String str = ”welcome to java“ 3)用字元陣列建立一個字串   char[]  chars = {'G','O','O','D' };   String str = new String (chars); 2、不可變字串 和 限定字串
1)String物件是不可變的,一旦建立,他的內容是不能改變;   如:String  s = “java”; s = "html";  不能改變原來s建立的字串物件,只是將變數s引向了新物件“html”,原物件無法再繼續訪問; 2)限定字串:jvm為提高效率並節約記憶體,會對具有相同字串序列的字串直接量使用同一個例項; 3、字串的比較
java.lang.String 
+equals (s1:String): boolean +equalsIgnoreCase (s1:String ): boolean +compareTo (s1:String): int  +compareToIgnoreCase
(s1:String): int 
+regionMatches (index: int ,s1:String,  s1Index:int , len:int ) :boolean +regionMatchesIgnoreCase (index: int , s1:String,  s1Index:int , len:int ) :boolean +startWith (prefix:String) : boolean +endWtih (prefix:Sring) :boolean

○如果這個字串等於字串s1,則返true;
○ 同上,不過忽略大小寫;

○ 返回一個大於0,等於0、小於0的整數,表明這個字元是大於、等於、或小於s1;
○ 同上,不過忽略大小寫

○ 如果這個字串指定的子域精確匹配
字串s1中指定的子域,則返回true;
○ 同上,不過忽略大小寫;


○如果這個字串以指定字首開始,返回true;
○如果這個字串以指定字尾開始,返回true;
  1)用法,如s1和s2比較   String s1 = ....;   String s2 = .....;   boolean a = s1.equals(s2);   2)運算子==只能檢測2個運算元是否指向同一個物件; 4、字串長度、獲取字元,組合字串;
java.lang.String 
+length ( ):int 
+charAt (index:int ):char
+conat (s1:String) :String 
○返回這個字串的字元個數
○返回這個字串的指定下標處的字元;
○返回連線這個字串和s1 所構成的新字串;
   1) String s3 = s2.conat(s1)  等價於 String s3 = s2+s1 5、獲取字串
java.lang.String 
+substring (beginIndex: int) : Sring 
+substring (beginIndex: int, endIndex: int) : String 
○返回這個字串中以指定beginIndex開始,
並延續到結尾(或endIndex)的字串;
6、 字串的轉、替換和分隔
java.lang.String
+toLowerCase( ) :String
+toUpperCase( ) :String 

+trim ( ) :String
+split ( delimiter :String):String[ ]

+replace (oldChar:char,
   newChar:char) :String

+replaceFirst   (oldString:String,
   newString:String) :String
+replaceAll  (oldString:String,
   newString:String) :String 

○返回鍵所有字元轉化為小寫的新字串;
○返回鍵所有字元轉化為大寫的新字串;

○返回去掉兩端空白字元之後的新字串;
○返回用定界符分隔的字串 所構成的一個字串陣列

○用一個新字元代替該字串所有匹配的舊字串;


○用一個新字串替換第一個匹配的字串;

○用一個新字串替換所有匹配的字串;
1)正則表示式:通過某個模式來匹配、替換或分隔一個字串; 2)matches類可以匹配一套遵循從某種模式的字串 “java is fun”.matches ( "java.*") // 結果為true;其中java.*是一個正則表示式; 3)split、repalceAll、replaceFirst 可以和正則表示式結合使用    String s = "a+b$#c".repalce("[$+#]","NNN")     //結果為 s=“aNNNbNNNNNNc”,其中[$+#]也是一個正則表示式; 7、找出字串中的某個字元或字串
java.lang.String 
+indexOf (ch: char): int
+indexOf (ch: char , formIndex :int):int

+indexOf (s:String) :int 
+indexOf (s:STring, formIndex:int):int

+lastIndex (ch:char):int 
+lastIndex (ch:char , formIndex: int ):int

+lastIndex (s:String):int 
+lastIndex (s:String , formIndex: int ):int
○返回第1次出現ch的下標,如果不匹配返回-1
○返回字串formIndex之後第1次出現ch的下標;

○返回第1次出現s的下標,如果不匹配返回-1;


○返回最後1次出現ch的下標,如果不匹配返回-1;
○返回字串自formIndex最後1次出現ch的下標;

○返回最後1次出現s的下標,如果不匹配返回-1;

8、字串和陣列之間的轉換 1)字串 → 字元陣列  ①toCharArray方法  如:char[] chars = "java".toCharArray(); // 獲取 chars[] = {'j','a','v','a'};  ②getChars (int srcBegin,int scrEnd ,char[] dst, int dstBegin)    將下標從scrBesign到scrEnd-1的字串複製 到字元陣列dst中 下標從dstBegin開始的地方;  如: char[] dst = {'j','a','v','a'}; "CS2340".getChars(1,4,dst[],1)  // dst[] = {'j','a', 'S','2','3','4', 'v','a'}; 2)字元陣列 → 字串 構造方法String(char[ ])方法valueOf(char[ ]) 如:String str = new String ( char[ ] {'j','a','v','a'} );   或  String str = String.valueOf ( char[ ] {'j','a','v','a'} ); 9、將字元和數值轉換為字串
java.lang.String 
+valueOf (c:char):String
+valueOf (data:char[ ]):String
+valueOf (d:double):String
+valueOf (f:float):String
+valueOf (i:int):String
+valueOf (b:boolean):String

○返回包含字元c的字串;
○返回包含陣列中字元的字串;
○返回表示double值的字串;
將字串轉化為數值 Double.parseDouble (str)Integer.parseInt (str) 10、格式化字串 String類中的format方法 String.format(format,item1,item2.....itemk) 如: String 2 = String.format("%5.2f",45.776); 字元類Character
Character類中大多數方法都是靜態方法; 使用時,應先構建物件;Character char = new Character();
java.lang.Character
+Character (value :char)
+charValue () : char

○使用char值構建一個字元物件
○從這個物件返回char值
+compareTo (anotherCharacter : Char) :int 
+equals(anotherCharacter : Char): boolean

○將這個字元與其他字元比較
○如果這個字元等於另一個字元返回true;
+isDigit (ch : char ) : boolean
+isLetter(ch:char) : boolean
+isLetterOrDigit(ch:char) : boolean 
+isLowerCase(ch:char) : boolean 
+isUpperCase(ch:char) : boolean 

○如果指定字元是一個數字,返回true;
○如果指定字元是一個字元,返回true;
○如果指定字元是一個數字或字母
○如果指定字元是一個小寫字母
○如果指定字元是一個大寫字母
+toLowerCase(ch:char) : char
+toUpperCase(ch: char) : char
○返回指定字母的小寫
○返回指定字母的大寫


9.3  StringBuilder / StringBuffer 類
 1、String類一旦確立,它的值就確定了,但是可以給一個StringBuilder或StringBuffer類新增、插入、追加新的內容;
     1) 如果是多工併發訪問,使用StringBuffer類;      2)如果是單任務訪問,使用StringBuilder類;
java.lang.StringBuilder
+StringBuilder
+StringBuilder (capacity : int)
+StringBuilder (s:String)
○構建一個容量為16的字元生成器;
○構建一個指定容量的字元生成器;
○構建一個帶指定字串的字元生成器;
2、修改StringBuilder中的字元 
java.lang.StringBuilder
+append (data : char[]) :StringBuilder
+append (data:char[] ,
    offset: int , len: int ):StringBuilder
+append ( v: aPrimitiveType) :StringBuilder
+append ( s: String) : StringBuilder

+delete(stractIndex: int ,endIndex:int):
    StringBuilder
+deleteCharAt (index :int) : Stringbuilder

+insert (index: int, data: char[] ,
     offset: int , len: int):Stringbuilder
+insert (offset: int , data: char[]):
    Stringbuilder 
+insert (offset: int , v: aPrimitiveType)
    :Stringbuilder 
+insert (offset: int ,s:String) :Stringbuilder 

+replace (startIndex: int ,
    endIndex: int , s: String):Stringbuilder 
+reverse () :StringBuilder
+setCharAt (index: int, ch :char) : void

追加一個char型陣列
○追加data中的子陣列

○追加一個基本型值
○追加一個字串

刪除stractIndex到endIndex-1的字元;

刪除指定下標的字元;

○在指定下標處,插入陣列中資料子陣列

○在指定下標處,插入陣列

○在指定下標處,插入轉換成字串的

○在指定下標處,插入字串

○使用特定字元,替換字元生成器中stractIndex
到endIndex - 1 的字元;
顛倒生成器中的字元
○在生成器特定下標設定一個新字元

3、StringBuffer中處理字元生成器的方法
java.lang.StringBuilder
+toString () : String
+capacity : int
+charAt (index: int) :char

+length () :int
+setLength (newlength :int) : void
+subString (stractIndex: int): String
+subString (stractIndex: int, endIndex:int): String

+trimToSize () :void
○重字元生成器返回以字串物件;
○返回這個字串生成器的容量;
○返回指定下標處的字元;

○返回這個生成器中字元的個數;
○在這個生成器中設定新的長度;
○返回從stractIndex開始的字串;
○返回stract到end-1 的字串;

○減少字串生成所用的儲存大小;
注:1)字串長度總是小於或等於生成器容量;        2)如果容量過大,會造成記憶體浪費,可以使用trimToSize方法將容量降到實際大小; 9.4  命令列引數 1、執行程式時,可以從命令列給main方法傳遞字串引數 如: java TestMain arg0 arg1 arg2  // 該命令列用三個字串arg0 、arg1、arg2啟動程式TestMain; 2、如果字串引數包含空格,就必須用“ ”括住該字串 3、當呼叫main方法時,java直譯器會建立一個數組儲存命令列引數,然後將陣列傳遞給args,如:args = new arg[n]; 4、在命令列中,要用“*”代替*,因為*代表當前目錄下所有的檔案;