Java学习笔记-字符串、正则表达式(String,regex)

时间:2022-06-06 18:47:03

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

String的特性:一旦初始化就不会被改变。描述字符串的类 1)String常用方法:
1.获取: charAt(int index)//角标对应的字符 indexOf(int ch)//字符所在的角标 lastIndexOf(int ch) length() substring(int beginIndex)//获取子串
public class StringTest {
public static void main(String [] args){
String s = "abdfdladhjfnv";
System.out.println(s.charAt(3));
System.out.println(s.indexOf('f'));
System.out.println(s.lastIndexOf('f'));
System.out.println(s.length());
System.out.println(s.substring(5));
}
}

运行结果:
f
3
10
13
ladhjfnv
  2.判断: contains(CharSequence s)//判断是否包含 endsWith(String suffix)//是否以传入的字符串结尾 startsWith(String prefix)//是否以传入的字符串开始 isEmpty()   JDK1.6//是否为空 equals(Object anObject)//比较字符串内容是否一样 equalsIgnoreCase(String anotherString)//忽略大小比较内容是否一样
public class StringTest {
public static void main(String [] args){
String s = "test.java";
System.out.println(s.contains("ja"));
System.out.println(s.endsWith("java"));
System.out.println(s.isEmpty());
}
}
运行结果: true
true
false
3.转换: 字符数组转成字符串:String s = new String(arr);通过构造函数转换 copyValueOf(char[] data)   静态方法 valueOf(char c) 静态方法 将字符串转成字符数组 toCharArray() 将字符串转成字节数组 getBytes()//使用默认编码将字符串编码为byte序列。 getBytes(Charset charset)//指定编码集
public class StringTest {
public static void main(String [] args){
char [] chs = new char [] {'a','b','c','d'};
System.out.println(new String(chs));//将字符数组转成字符串。
System.out.println(String.valueOf(7));//将数字转成字符串

}
}
运行结果:
abcd7<br style="LINE-HEIGHT: 1.5; FONT-FAMILY: 'Microsoft YaHei',SimSun,Verdana,Arial,Helvetica,sans-serif" />
4.替换:replace(char oldChar, char newChar)
5.切割:String []   split(String regex)
6.大小写转换: toUpperCase()   toLowerCase()
7.去除字符串两端空格:trim()
8.将两个字符串进行自然顺序的比较: compareTo(String anotherString) compareToIgnoreCase(String str)
2)StringBuffer:字符串缓冲区,是一个容器,长度可变,可以操作多种数据类型。 1.存储: append(char c) insert(int offset, char c) 
2.删除: delete(int start, int end) deleteCharAt(int index)
3.获取: length() charAt(int index)  indexOf(String str) lastIndexOf(String str)  substring(int start, int end)
4.修改: replace(int start, int end, String str) setCharAt(int index, char ch) reverse()
public class StringTest {
public static void main(String [] args){
StringBuffer sb = new StringBuffer();
sb.append("abc");
sb.append(7);
sb.append(3.0d);//添加任意元素
System.out.println(sb.toString());
sb.delete(4,sb.length());
sb.replace(0, 2, "java");//将角标0-2(不包含尾)替换成Java
System.out.println(sb.toString());
System.out.println(sb.reverse());//反转字符串
}
}
运行结果: abc73.0
javac7
7cavaj
3)StringBuilder(JDK1.5)与StringBuffer功能一样   区别: StringBuffer线程同步,StringBuilder线程不同步。 4)基本数据类型包装类: byte(Byte) short(Short) int(Integer) long(Long) booblean(Boolean) float(Float) double(Double) char(Character)
Integer  静态方法 基本数据类型转成字符串:基本数据类型+“”;Integer.toString(34)//将34转成“34”。 字符串转成基本数据类型:int num = Integer.parseInt("123"); toBinaryString(int i) toHexString(int i) toOctalString(int i) 其他进制转十进制 parseInt(String s, int radix)  示例:Integer.parseInt("110",2)//二进制转成十进制 IntegerJDK1.5新特性:1.自动装箱、拆箱。2.Integer对象数值在byte范围内时,该数值对象已存在,不会创建新对象。
5)正则表达式: 理解:符合一定规则的表达是。作用:用于专门复杂操作字符串。 特点:用一些特定的符号来表示一些代码的操作。好处:简化书写。弊端:不容易看懂。 1.匹配:matches(String regex) 代码示例:
//匹配 手机号段只有 13xxx 15xxx 18xxxx 
public class MatchesTest {
public static void main(String [] args){
String str ="15626677782";
boolean flag = matches(str);
if(flag==true)
System.out.println("手机号正确");
else
System.out.println("手机号错误");
}
public static boolean matches(String s){
String regex ="1[358]\\d{9}";
return s.matches(regex); //字符串匹配正则
}
}

 2.切割:split(String regex)
代码示例:
import java.util.Arrays; 
public class MatchesTest {
public static void main(String [] args){
String str ="abbbcdffeeghs";
System.out.println(Arrays.toString(split(str)));
}
public static String[] split(String s){
String regex ="(.)\\1+"; //定义切割的规则
return s.split(regex); //按照规则切割字符串。
}
}
运行结果: [a, cd, , ghs]
3.替换:replaceAll(String regex, String replacement) 代码示例:
public class MatchesTest { 
public static void main(String [] args){
String str ="abbbcdffeeghs";
System.out.println(replaceAll(str));
}
public static String replaceAll(String s){
return s.replaceAll("(.)\\1+","$1"); //按照定义好的规则替换内容。
}
}
运行结果: abcdfeghs
4.获取: 代码示例:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchesTest {
public static void main(String [] args){
String str ="ming tian jiu yao fang jia le ,da jia";
get(str);
}
public static void get(String s){
String regex = "\\b[a-z]{3}\\b";
Pattern p = Pattern.compile(regex);//将规则封装成对象
Matcher m = p.matcher(s); //正则对象与要作用的字符串关联,并获取匹配器对象
while(m.find())
System.out.println(m.group());
}
}
运行结果: jiu
yao
jia
jia

5.正则常用字符表现形式: [abc] ----a、b或c [a-zA-Z]----a 到 z 或 A 到 Z \d----数字:[0-9] \w----单词字符:[a-zA-Z_0-9] \b----单词边界 X?----X,一次或一次也没有 X*----X,零次或多次 X+----X,一次或多次 X{n} ----X,恰好 n 次 X{n,}----X,至少 n 次 X{n,m}----X,至少 n 次,但是不超过 m 次

-----------android培训java培训、java学习型技术博客、期待与您交流!------------