实训篇:第十二天
1.String、StringBuffer、StringBuilder
String
描述的是文本字符串序列
字符串是不可变的,一个字符串对象一旦被配置,其内容是不可变的
1.创建方式:
String str1 = "hello world";
String str2 = new String("hello world");
char[] arr = {'h','e','l','l','o'};
String str3 = new String(arr);
2.常见功能(都是这个类内的方法)
判断功能:
equals() 判断两个字符串的内容是否相同/值是否相同
boolean equalsIgnoreCase(String str) 判断是否相等,忽略大小写【验证码】
boolean contains(String str) 判断字符串是否包含
boolean startsWith(String str) 判断字符串是否以特定字符串开始
boolean startsWith(String prefix, int offset) 判断字符串从offset处是否以特定字符串开始
boolean endsWith(String str) 判断字符串是否以特定字符串结束
boolean isEmpty() 判断字符串是否为空【“”而不是null,这里api说明的是只有.length() == 0时才为真,而.length()是返回的字符数】
3.获取功能
int length() 获取字符串长度
char charAt(int index) 获取相应位置的字符,index取值[0,str.length() - 1]
int indexOf(int ch) 找不到返回-1,返回字符第一次出现的索引
int indexOf(String str) 找不到返回-1,返回字符串第一次出现的索引【子字符串才能找到】
int indexOf(int ch, int fromIndex) 从fromIndex开始,...
int indexOf(String str,int fromIndex) 从fromIndex开始,...
String substring(int start) 从某位置开始,到结束位置的子字符串
String substring(int start,int end) 指定开始和截止位置的子字符串,不包含最后一个位置(左闭右开)
4.转换功能
String中的定义:
private final char value[]; char是两个字节,byte是一个字节,char可以转为2个byte
private int hash;
private static final long serialVersionUID
byte[] getBytes() 能显示的字符/IO中要将char转为0-1表示的二进制数据才能传输,转为byte数组
char[] toCharArray() 转为char数组
byte[] byteArr = str.getBytes();
System.out.println(Arrays.toString(byteArr));
char[] charArr = str.toCharArray();
System.out.println(Arrays.toString(charArr));
[104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
[h, e, l, l, o, , w, o, r, l, d]
static String valueOf(char[] chs) char数组转为字符串(虽然字符串存储的方式就是char数组,但这把结果存到了一个类中)
static String valueOf(int i) int转为字符串(static用类名.方法名调用)
String toLowerCase() 转为小写
String toUpperCase() 转为大写
String concat(String str) / + 字符串连接
5.替换功能
String replace(char oldChar, char newChar)
String replace(CharSequence target,CharSequence replacement)【此处CharSequence可传String】
6.去除功能
String trim() 首尾去空格
7.按字典比较功能
int compareTo(String anotherString) 字符串在字典中相等-返回0;字符串在字典序中小于传入-返回负值;字符串在字典序中大于传入串-返回大于0的值
8.匹配功能
boolean matches(String regex) 是否符合正则表达式regex规则
3.正则表达式【不是java特有的,是通用的】【在java api的matches中有对正则表达式的解释】
正则表达式是包含特殊规则的字符串,用正则表达式匹配需要两个参数(规则和被判断字符串)
^:匹配字符串的开始
$:匹配字符串的结束
不用^和$,则被判断字符串只要其中的一部分满足匹配规则即可匹配
[]:匹配一个字符,几个[]匹配几个字符
{n}:长度为n
{n,}:长度至少为n
{n,m}:长度最少为n,最大为m
+:一次或多次
*:0次或多次
?【在限定数量的情况下才表示0-1次,其他情况下还可以表示懒惰模式】:0次或一次
//判断字符串中是否只有一个字符且这个字符是英文字母
^[a-zA-Z]$
//判断字符串中是否有2个字符且是英文字母
^[a-zA-Z]{2}$或者^[a-zA-Z][a-zA-Z]$
//用法比如
String str2 = "a";
String regex = "^[a-zA-Z]$";
System.out.println(str2.matches(regex));
//全英文字母且长度10-15
^[a-zA-Z]{10,15}$
//除上述要求外,以字母开头(第一个是字母),可以包含数字
^[a-zA-Z][a-zA-Z0-9]{9,14}$
//1或多次数字
^[0-9]+$
//0或多次数字
^[0-9]*$
//0-1次数字
^[0-9]?$
//[0-9]
\d
//[^0-9]
\D
//空白字符
\s
对于前端来说,正则表达式如果出现了\这个符号,直接用就行
但对于后端来说,需要用\\转义\