前言
学字符串时学习了一些对字符串的操作,在这里对写过的操作进行一下方法的总结,留作纪念。
如有错漏,欢迎指正
一 字符串与字符,数字间的转化
0.通用方法:"" + 字符/数字 可把字符/数字转化为字符串
char c = '字';
String str = "" + c;
1.字符转换为字符串
(1)使用Character类的tostring方法
char c = '字';
String str = Character.toString(c);
(2)使用String类的valueOf方法
char c = '字';
String str = String.valueOf(c);
(3)使用数组
char c = '字'
String str = new String(new char[]{c});
同理,可以将字符数组转化为字符串
char[] carray = new char{'字','符','数','组'};
String str = new String(carray);
附:将字符串转化为字符数组:
String str = "ABCDE"
char[] carray = str.toCharArray();
2.字符串转化为数字
(1)纯数字型字符串,使用Integer的valueOf
String str = "123456";
Integer num = Integer.valueOf(str);
此时返回的是Integer类型,如要返回int类型,则使用Integer的parseInt
String str = "123456";
int num = Integer.parseInt(str);
但如果字符串中掺有字母,此方法会报错
(2)纯字母的字符串,先转化为字符数组再使用Integer的valueOf
String str = "a";
char[] carray = str.toCharArray();
for(char c : carray){
char cc = Integer.valueof(c);
}
此处返回的为字符的ASCII值
3.数字转化为字符串
(1)使用String的valueOf()方法
int num = 2;
String str = String.valueOf(num);
(2)使用Integer的toString()方法
int num = 2;
String str = Integer.toString(num);
附:字符与数字间的转化需要先转化为字符串再由字符串转化为另一个
二 判断开头与末尾
(1)开头 startswith(String,(num)):从num处开始判断是否以String开始并返回一boolean值,如果不设置num则默认从开头开始
String str1 = "abc";
boolean b1 = str1.startsWith("a");
boolean b2 = str1.startsWith("a",1);
b1 = true b2 = false
(2)末尾 endWith(String):判断末尾是否是String并返回一Boolean值,与startswith(String,(num))不同的是不可设置num
String str = "abc";
boolean b3 = str.endsWith("a");
三 倒序
(1)直接倒序输出
String str = "ABCDEFGH";
for (int i = 0; i < str.length() ; i++) {
System.out.println(str.charAt(str.length()-i-1));
}
(2)使用StringBuffer的reverse()方法
String str = "ABCDEFGH";
StringBuffer sb = new StringBuffer(str);
sb = sb.reverse();
System.out.println(sb.toString());
(3)使用字符数组倒着保存字符串的每一项
String str = "ABCDEFGH";
char[] carray = new char[str.length()];
for (int i = 0; i < carray.length ; i++) {
carray[i] = str.charAt(str.length()-i-1);
}
四 分割
(1) str.split(regex):
以输入的符号为分隔符分隔字符串并返回一字符串数组
String str = "a,b,c,d,e";
String[] strarray = str.split("\\,"); //以逗号分割
(2)str.split(regex,limit):
以输入的符号为分隔符将字符串分割为limit份
String str = "a,b,c,d,e";
String[] strarray = str.split("\\,",2); //以逗号为分隔分成两份
五 空格的处理
(1)清除所有空格:使用replaceAll()方法
String str = "ABC D E F G";
str = str.replaceAll("\\s", "");
(2)清除首尾空格:使用trim()方法
String str = " ABC D E F G ";
str = str.trim();
(3)按空格分隔字符串
String str= "A B C D E F G";
String[] strarray = str.split("\\s+");
六 大小写转化
(1)使用toUpperCase()和toLowerCase()
String str = "a b c d e f g";
str = str.toUpperCase();
str = str.toLowerCase();
(2)使用ASCII:大写 = 小写 - 32,不过只能单独对某一字符进行转化,对整个字符串可使用for循环实现
String str = "a";
str = Character.toString(str.charAt(0)-32);
(3)转化单个字母:
由于String的replace()会替换字符串中所有同样字符,所以如果要求对字符串中某一特定位置的字母进行转化,可使用StringBuffer的replace()方法
//只将str中第二个b改为大写
String str = "bbC";
StringBuffer sb = new StringBuffer(str);
String change = sb.replace(1,2,Character.toString((char)(str.charAt(1)-32))).toString();
str = change;
也可以将单个字符截取为子字符串再进行转化
String str = "bbC";
str = str.substring(0,1)+str.substring(1,2).toUpperCase()+str.substring(2)
七 字符串比较
(1)如果都是使用字符串常量的引用对字符串进行赋值,使用== 和 equals()的结果是相同的
String str1 = "ABCDEFG";
String str2 = "ABCDEFG";
boolean b1 = str1 == str2;
String str3 = "ABCDEFG";
String str4 = "ABCDEFG";
boolean b2 = str3.equals(str4);
b1,b2都为true
(2)如果是使用构造方法创建字符串,应当使用equals()。因为String对equals()进行了重写,其比较的是字符串的字面值,而 == 比较的则是两字符串引用的地址,因此常常不是期望的答案
String str3= new String("A B C D E F G");
String str4= new String("A B C D E F G") ;
boolean b3 = str3.equals(str4);
b3= true
String str5= new String("A B C D E F G");
String str6= new String("A B C D E F G") ;
boolean b4 = str5 == str6;
b4 = false,因为 == 比较二者引用地址,而str5与str6引用地址不同
(3)忽略大小写的比较:使用equalsIgnorase()
String str3 = "A B C D E F G";
String str4 = "a b c d e f g";
boolean b1 = str3.equalsIgnoreCase(str4);
b1 = true
(3)按字典顺序比较两字符串
str1.compareTo(str2):基于字符的Unicode值进行比较;从开头开始按字典顺序比较str1与str2的字符,若str1的在str2之前则返回负数,否则返回正数,数的绝对值为两字母Unicode值的差;若开头字母相同则按顺序继续比较直到出现不一样的字母;若两字符串相等则返回0
String str1 = "abcc";
String str2 = "bcd";
String str3 = "abce";
String str4 = "abcd";
String str5 = "Abcc";
int compare1 = str1.compareTo(str2);
int compare2 = str1.compareTo(str3);
int compare3 = str1.compareTo(str4);
int compare4 = str1.compareTo(str5);
compare1 = 1
compare2 = -2
compare3 = 0
compare4 = 32
八 StringBuffer的部分常用方法
(1)添加元素 append() 将输入的字符串添加到末尾
StringBuffer sb = new StringBuffer("ABC");
sb.append("D");
(2)倒序 reverse()
StringBuffer sb = new StringBuffer("ABC");
sb.reverse();
(3) 替换元素 replace(num1,num2,String) 将num1到 num2-1替换为String
StringBuffer sb = new StringBuffer("ABC");
sb.replace(0,2,"D");
结果为 DC
(4)删除元素
delet(num1,num2)将num1到num2 - 1的元素全部删除
StringBuffer sb = new StringBuffer("ABC");
sb.delete(0,1);
结果为BC
deletCharAt(num)将num处的元素删除
StringBuffer sb = new StringBuffer("ABC");
sb.deleteCharAt(1);
结果为AC
(4)插入元素 insert(num,…)在num处插入字符/字符串/数字
StringBuffer sb = new StringBuffer("ABC");
sb.insert(1,"D");
结果为ADBC