Java 字串 String API 用法大全
String是一個比較特別的資料型態,它是一個物件類別( Object ),基本型態所對應的物件類別,可直接給於相同類型的值,而不需使用new來產生物件,而String資料型態跟基本型態一樣可以直接給於值,不過String沒有相對應的基本型態。
String在使用上十分普遍,大部份的資料型能都可以變成String存放。String本身是字串是使用utf8格式存放的,所以在計算字元時,一個中文字跟一個英文字都是算1,這點是跟其它程式語言不太一樣的。
String的宣告及初始化
“ ”雙引號內資料則為String資料型能
#
//直接給值
String a = "123";
System.out.println("a:"+a);
//new 一個String物件
String b = new String("456");
System.out.println("b:"+b);
//先宣告再給值
String c ;
c = "789";
System.out.println("c:"+c);
//先宣告再new一個物件
String d;
d = new String("321");
System.out.println("d:"+d);
字串的連結合併
字串的連結合併是利用 + 來使二個字串變成一個字串
#
String z = a + b;//二字串變數相加,連結
System.out.println("二字串變數相加:"+z);
String y = "789"+"123";//二字串相加,連結
System.out.println("二字串相加:"+y);
String x = 456+"123" ;//數字加字串,連結
System.out.println("數字加字串:"+x);
String.valueOf 基本型態轉換成字串
利用靜態函數String.valueOf(型態)可以把型能轉變成字串
#
int num = 123;
String Snum = String.valueOf(num);
System.out.println("數字變字串:"+Snum);
//數字變字串:123
double numf = 123.1;
String Snumf = String.valueOf(numf);
System.out.println("浮點變字串:"+Snumf);
//浮點變字串:123.1
基本型態物件.parse基本型態 字串轉換成基本型態
利用基本型態物件的函數parse,可以把字轉換成基本型態,如果無法轉換時會有Exception產生
#
String Sint = "123";
int myint = Integer.parseInt(Sint);
System.out.println("字串轉換成數字:"+myint);
//字串轉換成數字:123
String SFloat = "123.1";
float myfloat= Float.parseFloat(SFloat);
System.out.println("字串轉換成浮點數:"+myfloat);
//字串轉換成浮點數:123.1
String SDouble = "123.2";
double mydouble= Double.parseDouble(SDouble);
System.out.println("字串轉換成雙浮點數:"+mydouble);
//字串轉換成雙浮點數:123.2
//其它型態以此類推...
IndexOf 查詢字元位存在於字串內位置,以0為起始
IndexOf(字串),有找到字串時會回傳第一個字元的位置,IndexOf如查詢不到,則會回傳-1
字串內的內容存放可視為一連續空間,而每一個字元均存放在順序的位置上,如下表所示:
#
String smart = "Smart";
int idx = smart.indexOf("m");
System.out.println("m所在位置:"+idx);
//m所在位置:1
idx = smart.indexOf("rt");
System.out.println("rt所在位置:"+idx);
//rt所在位置:3
idx = smart.indexOf("z");
System.out.println("z所在位置:"+idx);
//z所在位置:-1
//中文部份
String chinese = "中華民國";
int cidx = chinese.indexOf("民");
System.out.println("民所在位置:"+cidx);
//民所在位置:2
cidx = chinese.indexOf("中華");
System.out.println("中華所在位置:"+cidx);
//中華所在位置:0
cidx = chinese.indexOf("台灣");
System.out.println("台灣所在位置:"+cidx);
//台灣所在位置:-1
replaceAll、replaceFirst字串取代
replaceAll (要被取代的字串,要取代的字串) 取代全部找到的”要被取代字串”
replaceFirst (要被取代的字串,要取代的字串) 取代第一個找到的”要被取代字串”
其中replaceAll函數可以使用正規表示式來做整批有規則性的取代
#
String replaceString = "blog.yslifes.com,blog.yslifes.com";
String replaced = replaceString.replaceAll("blog", "www");
System.out.println("All取代後的字串:"+replaced);
//All取代後的字串:www.yslifes.com,www.yslifes.com
replaced = replaceString.replaceFirst("blog", "www");
System.out.println("First取代後的字串:"+replaced);
//First取代後的字串:www.yslifes.com,blog.yslifes.com
String.format字串格式化
String.format是一個靜態函數,可以直接使用,將字串依設定的位置或格式回傳出來。
如需顯示三位數的字串數字,前方補零,則可利用以下方法:
#
String formatStr = "%03d";
String formatAns = String.format(formatStr, 12);
System.out.println("數字補零:"+formatAns);
//數字補零:012
CharAt取得指定字元
CharAt(位置)可取出指定位置的字元,中文算法與英文相同
#
String charStr = "This is my Web site! blog.yslifes.com";
char c = charStr.charAt(3);
System.out.println("英文第4位的字元是:"+c);
//英文第4位的字元是:s
charStr = "這是我的網站! blog.yslifes.com";
c = charStr.charAt(5);
System.out.println("中文第5位的字元是:"+c);
//中文第5位的字元是:站
equals 二字串是否相等
equals可以比較二個字串或物件是否相同,以為Object原型就有的方法,字串要全數相同回傳值才會為true
#
String aStr = "String A";
String bStr = "String B";
boolean Equal = aStr.equals(bStr);
System.out.println("a與b是否相同:"+Equal);
//a與b是否相同:false
String cStr = "String A";
Equal = aStr.equals(cStr);
System.out.println("a與c是否相同:"+Equal);
//a與c是否相同:true
String dStr = "String A ";
Equal = aStr.equals(dStr);
System.out.println("a與d是否相同:"+Equal);
//a與d是否相同:false
split字串切割
split(指定符號) ,可依指定符號把字串分開成陣列
#
String splitStr = "blog,yslifes,com";
String[] array = splitStr.split(",");
for(int i = 0 ; i < array.length ; i ++)
System.out.println("第"+i+"個:"+array[i]);
/*
第0個:blog
第1個:yslifes
第2個:com
substring取得指定字串範圍
substring(起始值 , 終始值),可以取出起始位置,到終止位置的字串,其中包含起始值,不包含終始值
#
String subStr = "blog.yslifes.com";
String sub1 = subStr.substring(1, 4);
System.out.println("第1到4的字串內容為:"+sub1);
//第1到4的字串內容為:log
trim去空白
trim()可以去除左邊及右邊二則空白,不過在字串間空白並不會處理
#
String HasEmptyStr = " ABC";
System.out.println("1空白去除:"+HasEmptyStr.trim());
//1空白去除:ABC
HasEmptyStr = "ABC ";
System.out.println("2空白去除:"+HasEmptyStr.trim());
//2空白去除:ABC
HasEmptyStr = " ABC ";
System.out.println("3空白去除:"+HasEmptyStr.trim());
//3空白去除:ABC
HasEmptyStr = "ABC DEF";
System.out.println("4空白去除:"+HasEmptyStr.trim());
//4空白去除:ABC DEF
字串長度
length()可以取回字串的長度
#
String strLength = "長度是多少呢?";
System.out.println("字串長度:"+strLength.length());
//字串長度:7
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#format(java.lang.String, java.lang.Object...)
http://blog.yslifes.com/archives/638