API
String(byte[] bytes)
对字符串进行编码与解码,默认使用的是utf-8编码格式
public class StringDemo1 {
public static void main(String[] args) throws UnsupportedEncodingException {
/*String s = "abc";
byte [] b = s.getBytes();//编码
System.out.println(Arrays.toString(b));
String s1 = new String(b);//解码
System.out.println(s1);*/
//当编码与解码使用的编码格式不统一时,就会出现乱码问题
System.out.println('中'+0);
String ss = "中文";
byte [] bb = ss.getBytes("GBK");//编码
System.out.println(Arrays.toString(bb));
String ss1 = new String(bb,"GBK");//解码
System.out.println(ss1);
String s2 = new String(bb,2,2,"GBK");
System.out.println(s2);
}
}
String(char[] value)
对给定的字符串进行排序,首先将字符串存入数组中,然后进行排序并输出
public class StringDemo2 {
public static void main(String[] args) {
/*
char[] toCharArray();
*/
String s = "absrxhrdbfv";
char[] chars = s.toCharArray();
Arrays.sort(chars);
System.out.println(Arrays.toString(chars));
String s1 = new String(chars);
System.out.println(s1);
String s2 = String.valueOf(chars);
System.out.println(s2);
}
}
替换功能
字符串的替换以及对空格的删除
public class StringDemo3 {
public static void main(String[] args) {
/*
替换功能
String replace(char old,char new)
String replace(String old,String new)
去掉字符串空格 String trim()
*/
//字符串的替换
String s = "abcdefg ";
System.out.println(s.replace("c","C"));
//测试字符串的长度
System.out.println(s.length());
//删除字符串中的空格,返回一个新的字符串
System.out.println(s.trim().length());//转们去除字符串,前后的空格,中间的不变化
}
}
正则表达式
(1) 字符串的拆分、替换、格式匹配
public class StringDemo4 {
public static void main(String[] args) {
/*
split(String regex)
replaceAll(String regex,String replacement)
replaceFirst(String regex,String replacement)
*/
String s = "ab:cd:efg";
//字符串的拆分,,,,遇到":"就拆分;;"\\d"遇到数字就拆分;;"\\w"遇到字母就拆分
String [] ss = s.split(":");
String [] sss = s.split("\\w");
System.out.println(Arrays.toString(ss));
System.out.println(Arrays.toString(sss));
String sq = "abcdefg";
//replaceAll(),,替换所有的
//replaceFirst(),,只替换第一个
String sq1 = sq.replaceAll("cd","CC");
System.out.println(sq1);
/*
正则表达式
规则
是一种字符串模式匹配语言
注册账号
手机号 13468560674 11位 数字 以1开头 ----格式
邮箱 3220391951@qq.com 必须包含@字符,后面的格式是固定的
*/
/*Scanner sc = new Scanner(System.in);
System.out.println("请输入一个手机号:");
String phone = sc.next();*/
//凡是有输入的地方必须要有验证
//phone.charAt(0)==1 phone.length()==11
String st = "a";
boolean res = st.matches("a");//用字符串对象中mathes("正则表达式");
System.out.println(res);
/*
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
X|Y X 或 Y
*/
String sp = "2";
boolean res1 = sp.matches("\\d+");
System.out.println(res1);
//手机号规则
String sss1 = "14768560674";
boolean phone = sss1.matches("1[3457]\\d{8}4");
System.out.println(phone);
//QQ号格式
String sss2 = "3220391951";
boolean QQ = sss2.matches("[1-9]\\d{4,10}\\d[0-9]");
System.out.println(QQ);
//邮箱格式判定
String sp1 = "3220391951@qq.cnqwerf";
boolean youxiang = sp1.matches("[1-9]\\d{5,11}@[a-z,0-9]{2,5}.[A-z]{2,10}");
System.out.println(youxiang);
//非单词字符
String sq11 = "%&$%";
boolean feidanci = sq11.matches("\\W+");
System.out.println(feidanci);
//单词字符
String sq2 = "6789iejdhiejhd829woijqsodhwuEUDSUIJJIJCSIJQWO9SCD";
boolean danci1 = sq2.matches("\\w+");
System.out.println(danci1);
//通用邮箱格式 \\. 对.符号进行转义
boolean res11 = "dfgd3AA73@163qq.com.com".matches("\\w{6,10}@\\w{2,5}\\.(com|com\\.cn)");
System.out.println(res11);
}
}
StringBuffer
线程安全,可变的字符序列,字符缓冲区就像一个String,值可变的字符串
StringBulider
线程不安全的,值可变的字符串
public class StringBufferDemo1 {
public static void main(String[] args) {
/*
StringBuffer线程安全的,值可变的字符串
StringBuilder线程不安全的,值可变的字符串
public StringBuffer() {
super(16);
}
*/
//创建一个字符串对象,底层是一个char数组
/*StringBuffer s = new StringBuffer();//默认无参的构造方法
StringBuffer ss = new StringBuffer(30);
StringBuilder s1 = new StringBuilder(); */
StringBuffer s2 = new StringBuffer("abcd");
s2.append("11111");
}
}