深入浅出 java.String
Java 处理字符串常用的一些方法
Java定义一个字符串
- 直接定字符串
直接定义字符串表示直接使用
“”
来表示字符串中的内容String str = "Hello Mujey"; String str; str = "Hello Mujey"
对字符串的赋值操作可以在声明号String类型的句柄之后进行,但是在使用这个对象的之前必须进行赋值操作。
- 使用String类进行定义
String类位于
java.lang
包中,当我们创建一个java程序的时候,系统会自动帮我们引用java.lang.*
所以我们可以直接使用,并不需要手动import
String str = new String("Hello Mujey"); String s = new String(str);
注意: 当直接使用String(),括号里面不输入任何参数的时候,会创建一个空的字符串,并且赋值给句柄。
String(),括号中还可以输入一个数组:
char[] c = {'M','u','j','e','y'}; String str = new String(c); System.out.println(str); // Mujey
在String()的括号中放入一个数组的时候,实质上是对该数组进行了一个克隆操作, 所以在赋值完成之后再改变数组中元素的值并不会影响字符串中已经存储的值。
char c = {'h','e','l','l','o'}; String str = new String(c,0,3); System.out.println(str); // hel
在括号中还可以传入两个integer类型的参数,用于表示截取从第几个元素到第几个元素,并将他们连成一个字符串。
String和Integer之间的转换
String转换为int
String类型转换为int类型主要有两种方式
- Integer.parseInt(str)
- Integer.valueOf(str).inValue()
String str = "333";
int i = 0;
// 第一种方法
i = Integer.parseInt(str); // => int: 333
i = Integer.parseInt("345"); // => int: 345
i = 0;
// 第二种方法
i = Integer.valueOf(str).inValue(); // => int: 333
i = Integer.valueOf("345").inValue(); // => int: 345
Int转换为String
前几天在LeetCode做算法题的时候看到一个题目来和大家分享一下,这个题目非常的简单。给出一组数组,返回位数为偶数的个数例如:
输入:[345,365,343,53,43,2532]
返回:3
53和43是两位数,他们的位数是2;2532是一个四位数,它的位数是4。所以总共有3个偶数位数的数字。
这个题目最简单的解法就是将int类型的整数转换成一个字符串,然后通过字符串的长度来判断是奇数位数还是偶数位数。
public int findNumbers(int[] nums) {
int result = 0;
for (int i = 0; i < nums.length; i++) {
String s = String.valueOf(nums[i]);
if (s.length() % 2 == 0) {
result ++;
}
}
return result;
}
这是这道题的解法,怎么样,是不是非常的简单。但是其中就涉及到了int类型转换成String类型的操作。
int类型转换为String类型有3种方式:
- String str = String.valueOf(int)
- String str = Integer.toString(int)
- String str = "" + i
int num = 30;
String str1 = String.valueOf(num); // String: "30"
String str2 = Integer.toString(num); // String: "30"
String str3 = "" + num; // String: "30"
这三种方式的转换结果都是一样的,但是博主推荐使用前面的两种方式来转换。最后一种虽然语法简介,但是它的短板就是执行的效率远远没有前面两种方式来的高。
第一种方式valueOf()中必须填入一个值,不然会有空指针异常产生。
获取字符串长度
细心的您肯定已经发现在上面的LeetCode算法题中,我还用到了s.length这个方法,这个方法的作用就是简单的获取字符串的长度。
在有些方面,字符串有点像一个char类型的数组,他们都可以使用.length
来获取长度。但是稍有不同,字符串获取长度的.length()
后面有一对小括号,说明这是一个方法,而char类型的数组,获取长度的方式则是获取这个数组的length
属性,所以没有一对小括号。
String str = "29493929134";
int i = str.length();
System.out.println(i); // 11
String类型的大小写转换
字符串类型的大小写转换只适用于英文,在中文中不可用,那也是理所当然的,因为中文没有大小写 (′▽`)
英文字符串的大小分别使用两个方法来完成:
- 转换为小写: str.toLowerCase()
- 转换为大写: str.toUpperCase()
String str = "abcd";
System.out.println(str.toUpperCase()); //:=> ABCD
System.out.println(str.toLowerCase()); //:=> abcd
去除字符串中的空格
如果一个字符串中的空格会对执行程序:例如判断等操作有所影响的时候,我们可以使用:
str.trim()
这个方法来去除字符串中的空格:
String str = "Hello Java";
System.out.println(str.trim()); //:=>HelloJava
注意: .trim()
方法只能去除字符串中的半角空格,换句话来说中文状态下的全角空格,使用.trim()
方法是无法去除的。
这种时候我们需要用到.replace()
方法,将字符串中的全角空格转会成半角空格,然后用.trim()
方法将它去除掉,.replace()
方法在使用的时候需要两个参数,被替换的字符和替换它们的字符。
全角空格的unicode编码是12288,所以想讲全角空格替换为半角空格,就只需要
str.replace((char)12288, ' ');
截取和分割字符串
截取字符串
substring()方法可以用来截取字符串,这个方法最多可以传入两个参数,最少一个。
在传入一个参数的时候就表示从这个字符串的第几个字符开始截取到最后一个字符。
而当这个方法收到两个参数的时候,且第二个参数必须大于第一个参数,这个方法就会返回从第几个字符到第几个字符的字符串片段。
String str = "I like programming";
System.out.println(str.substring(2)); //:=>like programming
System.out.println(str.substring(1)); //:=> like programming
System.out.println(str.substring(2,5)); //:=>like
分割字符串
split()方法可以用来分隔字符串
split()方法可以穿出一个String类型的分割标志,这是必不可少的,.
和|
这两个字符需要需要使用\\
转义字符来进行转义,不然java是无法识别它们的
String str = "Java,Python,Go,C#,Swift,Ruby,PHP,Object-C";
String[] strs = str.split(",");
for (str : strs){ System.out.print(str + "\t"); }
// Java Python Go C# Swift Ruby PHP Object-C
String frontEnd = "JavaScript|HTML5|CSS|jQuery|vue|React|Bootstrap";
String[] frontEnds = frontEnd.split("\\|"); // 使用转义字符\for (str : frontEnds){ System.out.print(str + "\t");}
// JavaScript HTML5 CSS jQuery vue React Bootstrap
在这个字符串类型的参数后面,还可以加上一个int类型的参数
String str = "Java,Python,Go,C#,Swift,Ruby,PHP,Object-C";
String[] strs = str.split(",", 4);
for (str : strs){ System.out.print(str + "\t"); }
// Java Python Go C#,Swift,Ruby,PHP,Object-C
原文地址:https://www.cnblogs.com/mujey/p/12233276.html