String類的基本用法與注意點,StringBuffer類的用法


package cn.hncu.day8;

public class RegExpDemo {
public static void main(String[] args) {
String str ="011-12345678";
boolean boo = str.matches("0\\d{2}-\\d{8}");
System.out.println(boo);//true
str ="110-12345678";
boo = str.matches("0\\d{2}-\\d{8}");
System.out.println(boo);//false

str ="dsÕÅdsjksdj·ásaa";
boo = str.matches(".*ÕÅ.*·á.*");//ÕÅdsjksdj·á
System.out.println(boo);//false


}
}

這個地發關於字符串的匹配,可以去百度上搜索例如:

\w  匹配數字,字母,下划線

\b  以開頭或結尾

\d  數字

^  匹配開始

$  匹配結束

{n}  重復N次

/內容/  構成一個不區分大小寫的正則表達式

 

----------------------------------------------------------

package cn.hncu.day8;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExpDemo2 {
public static void main(String[] args) {
String str ="011-12345678";
Pattern p = Pattern.compile("0\\d{2}-\\d{8}");//p--可以理解成正則表達式的工具
Matcher m = p.matcher(str);//m--可以理解成匹配結果的封裝體
boolean boo = m.matches();//讀取匹配結果信息
System.out.println(boo);
}
}

--------------------------------------------------------------------------

package cn.hncu.day6;

import java.io.UnsupportedEncodingException;

public class StringDemo {

public static void main(String[] args) {
System.out.println("========1演示format()方法=========");
String str;
for(int i=1;i<10;i++){
str = String.format("hncujava-%3d", i);//這里相當於C里面的printf("%3s", );
System.out.println(str);
}
System.out.println("========2=========");
// 2、輸出String s =“1234567”的長度,第3個字符,字節個數
String s="1234567";
System.out.println("長度:"+ s.length() ); //7
System.out.println("第3個字符:"+ s.charAt(2) );//3
System.out.println("字節個數:"+ s.getBytes().length);//7

System.out.println("========3=========");
//3、輸出s=“1234567中"的長度,第3個字符,字節個數
s="1234567中";
System.out.println("長度:"+ s.length() ); //8
System.out.println("第3個字符:"+ s.charAt(2) );//3
System.out.println("字節個數:"+ s.getBytes().length);//GBK=9 UTF-8=10

System.out.println("========4=========");
//4、判斷某段字符是否含有漢字(假定只有中英文字符)
s ="jj中kks我w你ew";
if(s.getBytes().length==s.length()){
System.out.println(s+"---沒有漢字");
}else{
System.out.println(s+"---有漢字,個數為:"+ (s.getBytes().length-s.length()) );
}

System.out.println("========5=========");
//5、分別輸出一個字符串中的中文字符、英文字母、數字
s ="jj中kk3d我s0w4w";
char cs[] = s.toCharArray();
for(char c: cs){
if((""+c).getBytes().length > (""+c).length() ){
System.out.println("漢字:"+c);
}else if(c>='a'&&c<='z' || c>='A'&&c<='Z'){
System.out.println("英文字母:"+c);
}else if(c>='0'&&c<='9'){
System.out.println("數字:"+c);
}
}

System.out.println("========6=========");
//6 演示編碼問題
s="1234567中";
try {
//以指定編碼的方式來獲取字符串中的字節數組
System.out.println(s.getBytes("UTF-8").length);
byte bytes[] = "中國wqqew我".getBytes("UTF-8");
String ss1 = new String(bytes);//使用平台的默認碼表,如果默認是gbk則亂碼,如果默認是utf-8則ok
System.out.println(ss1);
String ss2 = new String(bytes,"gbk");//指定碼表,亂碼----因為解碼表和編碼表不同
System.out.println(ss2);
String ss3 = new String(bytes,"utf-8");//指定碼表,ok----因為解碼表和編碼表一致
System.out.println(ss3);

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

}

}

 

---------------------------------------------------------------------------------

package cn.hncu.day6;

import java.io.UnsupportedEncodingException;

public class StringDemo2 {

public static void main(String[] args) {
System.out.println("========1=========");
// 1、字符串比較大小
String str1 = "1234567中hw";//48--'0' 51--'3'
String str2 = "12hello";//97--'a' 104--'h'
//System.out.println( str1>str2 );//錯,只有基本數據類型才能使用“>”
System.out.println( str1.compareTo(str2) );//依次把兩個字符串的每個字符進行相減,只要出現一個字符不相等,就把這兩個字符相減的結果作為整個函數的返回值---小於0代表str1更小,大於0代表str1更大,等於0則str1與str2相等

System.out.println("========2=========");
// 2、子串位置查找
String s="he";
System.out.println( str1.indexOf(s) );//-1,代表str1中不存在子串s
System.out.println( str2.indexOf(s) );//2,代表子串s在str2中的位置從第2個字符處開始

System.out.println("========3=========");
// 3、查找姓名中帶“飛”字的人
String[] names={"張三","李四","張飛","張三飛","李四飛","飛飛張","葉飛燕","小張"};
String s1="飛";
for(String name: names){
if(name.indexOf(s1)>=0){
System.out.print(name+" ");
}
}
System.out.println();

//查找姓“張”的人
//法1
String s2="張";
for(String name: names){
if(name.indexOf(s2)==0){
System.out.print(name+" ");
}
}
System.out.println();
//法2
for(String name: names){
if(name.startsWith(s2)){
System.out.print(name+" ");
}
}
System.out.println();

System.out.println("========4=========");
// 4、查找擴展名為“.java”的文件名。
String[] fileNames={"aa.java","a.java.c","ba.c.java","we.txt","java.js","1.java"};
String s3=".java";
for(String fileName:fileNames){
if(fileName.endsWith(s3)){
System.out.print(fileName+" ");
}
}
System.out.println();

System.out.println("========5=========");
//5 練習substring
String str3="welcome you!";
System.out.println(str3.substring(3));//come you!
System.out.println(str3.substring(2,4));//lc---規范:凡是取某個區間范圍的,都是:左包含右不包含

System.out.println("========6=========");
//equals和equalsIgnoreCase()
String str4="Welcome You!";
System.out.println(str3.equals(str4));//false
System.out.println(str3.equalsIgnoreCase(str4));//true

System.out.println("========7=========");
//※注意※----凡是對String變量進行處理的方法,處理結果都是以新的字符串返回出來的(因此我們要手動去接返回結果),原來的字符串變量是沒有變化的!---該思想與我們之前講的String變量作為方法的參數時,用法和基本數據類型相同即是值傳遞---思想是一致的!
String ss1= str4.toUpperCase();
System.out.println(str4);//Welcome You!--舊的
System.out.println(ss1);//我們想要的結果
String ss2 = str4.replace('o', '6');
System.out.println(str4);//Welcome You!--舊的
System.out.println(ss2);//我們想要的結果

System.out.println("========8=========");
// 8、用戶信息的包裝與拆解
String userInfo="hncu,1234,13612345678";
String strs[] = userInfo.split(",");
User user = new User();
user.setName(strs[0]);
user.setPwd(strs[1]);
user.setTel(strs[2]);
System.out.println(user);

String str5 = "aa,bb,cc,a1 b2 dd";
String strs2[] = str5.split(",| +");
for(String str: strs2){
System.out.println(str);
}

System.out.println("----------------");
String str6 = "aa|bb|cc|a1|b2.dd";
//法1
String strs3[] = str6.split("\\.|\\|");//如果是正則表達式中有特殊含義的字符作為分隔符,那么得進行轉義
for(String str: strs3){
System.out.println(str);// \\t
}

System.out.println("--------+--------");
//法2
String str7 = str6.replace("|", ",");
str7 = str7.replace(".", ",");
String strs4[] = str7.split(",");
for(String str: strs4){
System.out.println(str);// \\t
}

System.out.println("========8=========");
// 9、用戶數據后台校驗前的過濾
String str9=" dsjsdjksd dskkds ";
String ss9 = str9.trim();
System.out.println(str9);//舊的
System.out.println(ss9);//我們想要的結果

}

}

class User{
private String name;
private String pwd;
private String tel;
public User(String name, String pwd, String tel) {
super();
this.name = name;
this.pwd = pwd;
this.tel = tel;
}

public User() {
super();
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPwd() {
return pwd;
}

public void setPwd(String pwd) {
this.pwd = pwd;
}

public String getTel() {
return tel;
}

public void setTel(String tel) {
this.tel = tel;
}

@Override
public String toString() {
return "User [name=" + name + ", pwd=" + pwd + ", tel=" + tel + "]";
}
}

 

-----------------------------------------------------------------------------------------

package cn.hncu.day8;

public class StringBufferDemo2 {

public static void main(String[] args) {
String str = new String("java");
strReplace(str);
System.out.println(str);//不變

StringBuffer sb = new StringBuffer("java");
sbReplace(sb);
System.out.println(sb.toString());//變
}

private static void sbReplace(StringBuffer sb) {//參數用法同:引用類型---引用傳遞
sb.append("EE");
}

private static void strReplace(String str) {//參數用法同:基本數據---值傳遞
str = str.replaceAll("j", "i");
}

}StringBuffer是多線程安全的,而StringBuilder不是線程安全的,StringBuffer類略微會快一些;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM