字符串处理
定义字符串
- 使用String;
- String str = "hello";
- String str; str = "hello";
连接字符串
- 使用" + " 号 连接
- String str = "welcome to " + " beautiful "+"ShenZhen";
- 使用concat连接
- String info = "中国"; info.concat("广东").concat("深圳");
获取字符串长度
- 使用字符串.length();
- String str = "helloWorld"; str.length();
转换大小写
- 大写使用toUpperCase()
- String str = "hello"; str.toUpperCase();
- 小写使用toLowerCase()
- String str = "hello"; str.toLowerCase();
去除空格
- 使用字符串.trim();
- String str = " hello "; str.trim();
提取子字符串
- substring(int beginIndex) 提取从索引位置开始至结尾处的字符串部分。
- String str = " 我爱 Java 编程"; String newstr = str.substring(3);
- substring(int beginIndex, int endIndex) 提取从索引位置开始至指定的位置的字符串部分。
- String str = " 我爱 Java 编程"; String newstr = str.substring(3,7);
字符串分割
- str.split(); 按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。
- 两种形式str.split(String sign); 或者 str.split(String sign, int limit);
- String Colors = "Red,Black,White,Yellow,Blue";
- String[] arr1 = Colors.split(",");
- String[] arr2 = Colors.split(",",3);
字符串的替换
- 字符串.replace(String oldstr, String newstr) 替换匹配到的字符串成一个新字符串
- String words = "hello world, hello java";
- words.replace("hello","你好");
- 字符串.replaceFirst(String regex, String replacement) 替换匹配到的第一个字符串换成新字符串
- String words = "hello java,hello javascript";
- String newWords = words.replaceFirst("hello", "你好");
- 字符串.replaceAll(String regex, String replacement) 将目标的字符串中匹配正则表达式的所有子字符串替换成新字符串
- String words = "hello java, hello javascript";
- newStr = words.replaceAll("hello", "你好");
字符串的比较
equals()、equalsIgnoreCase() 、compareTo()
equals() 逐个比较两个字符串的每个字符是否相同, 字符串的大小写也在检查范围内。
- 字符串1.equals(字符串2)
- String str1 = "abc"; String str2 = "ABC"; String str3 = new String("abc");
- str1.equals(str2) // false
- str1.equals(str3) // true
equalsIgnoreCase()
- 和equals方法完全相同,唯一不同的是equalsIgnoreCase()不区分大小写。
- String str1 = 'abc'; String str2 = 'ABC';
- str1.equalsIgnoreCaseI(str2); // true
compareTo()
- 用于按字典顺序比较两个字符串的大小,比较是基于字符串各个字符的Unicode值。
- str.compareTo(String otherstr);
- 它会按字典顺序将 str 表示的字符序列与 otherstr 参数表示的字符序列进行比较。如果按字典顺序 str 位于 otherster 参数之前,比较结果为一个负整数;如果 str 位于 otherstr 之后,比较结果为一个正整数;如果两个字符串相等,则结果为 0。
- 提示:如果两个字符串调用 equals() 方法返回 true,那么调用 compareTo() 方法会返回 0。
- String str = "A"; String str1 = "a";
- str.compareTo(str1);
字符串查找
str.indexOf();
- indexOf()和lastIndexOf()方法用于在字符串中获取匹配字符串的索引值。
- indexOf方法用于返回字符串在指定字符串中首次出现的索引位置,如果能找到则返回索引值,否则返回-1;
- str.indexOf(value);
- str.indexOf(value, int fromIndex)
- str 表示指定字符串,value表示待查找的字符串;fromIndex表示查找时的起始索引,如果不指定,则默认从指定字符串中的开始位置(默认为0)开始查找。
- String s = "hello Java"; int size = s.indexOf("v");
str.lastIndexOf();
- 用于返回字符串在指定字符串中最后一次出现的索引位置,如果能找到则返回索引,否则返回-1;
- str.lastIndexOf(value);
- str.lastIndexof(value, int fromIndex)
- lastIndexOf() 方法的查找策略是从右往左查找,如果不指定起始索引,则默认从字符串的末尾开始查找。
根据索引查找charAt()
- 字符串名.charAt(索引值)
- 可以在字符串内根据指定的索引查找字符
- String str = "today,monday,sunday";
- str.charAt(0); str.charAt(3);
字符串的加密解密
- 自定义函数实现?
StringBuffer类
- 因为 StringBuffer 类是可变字符串类,创建 StringBuffer 类的对象后可以随意修改字符串的内容。每个 StringBuffer 类的对象都能够存储指定容量的字符串,如果字符串的长度超过了 StringBuffer 类对象的容量,则该对象的容量会自动扩大。
创建StringBuffer类
//定义一个空的字符串缓冲区,含有16个字符的容量
StringBuffer str1=new StringBuffer();
//定义一个含有10个字符容量的字符串缓冲区
StringBuffer str2=new StringBuffer(10);
//定义一个含有(16+4)的字符串缓冲区,"青春无悔"为4个字符
StringBuffer str3=new StringBuffer("青春无悔");
/*
*输出字符串的容量大小
*capacity()方法返回字符串的容量大小
*/
System.out.println(str1.capacity()); //输出 16
System.out.println(str2.capacity()); //输出 10
System.out.println(str3.capacity()); //输出 20
追加字符串
- StringBuffer类的append()方法用于向原有StringBuffer对象中追加字符串。
- StringBuffer 对象.append(String str);
StringBuffer buffer = new StringBuffer("hello,");
String str = "world";
buffer.append(str);
System.out.println(buffer.substring(0)); // hello,world
** 替换字符串**
- StringBuffer类的setCharAt() 用于在字符串的指定索引位置替换一个字符。
- StringBuffer 对象.setCharAt(int index, char ch);
- 该方法是修改对象中索引值为index位置的字符为新的字符ch。
StringBuffer str = new StringBuffer("hello");
str.setCharAt(1,"E");
System.out.println(str); //hEllo
str.setCharAt(0,"H"):
System.out.println(str); // HEllo
反转字符串
- StringBuffer类中的reverse()方法将字符串序列用其反转的形式取代。
- StringBuffer 对象.reverse();
StringBuffer str = new StringBuffer("java");
str.reverse();
System.out.println(str); // avaj
删除字符串
- StringBuffer 提供deleteCharAt() 和 delete() 删除字符串的方法。
- deleteChartAt()方法用于移除序列中指定位置的字符
- StringBuffer 对象.deleteCharAt(int index);
StringBuffer str = new StringBuffer("she");
str.deleteCharAt(2);
System.out.println(str); //sh
- delete 方法用于移除序列中子字符串的字符
- StringBuffer 对象.delete(int start, int end);
- start表示要删除字符的起始索引(包括索引值对应的字符),end表示要删除字符串的结束索引值。该方法作用是删除指定区域以内的所有字符。 取值范 [2,5) 包含前部分,不包含后部分
StringBuffer sb=new StringBuffer("hello jack");
sb.delete(2,5);
System.out.println(sb); //输出:he jack
sb.delete(2,5);
System.out.println(sb); //输出:heck