目录
1. 序言
工欲善其事,必先利其器;器欲尽其能,必先得其法。
根据自己刷题总结出的一些经验,现在整理出关于字符串这个模块的一些基础知识以及技巧,只有了解并掌握这些技巧我们才能快速的解题。
2. 字母的大小写判断与转换
2.1 字母大小写判断
字母大小写判断最原始的做法如下所示:
1)通过比较ASCII
大写转小写:s[i] >= 65 && s[i] <= 90 ==> s[i] += 32
小写转大写:s[i] >= 97 && s[i] <= 122 ==> s[i] -= 32
2) 调用函数
判断字符是否为大写:Character.isUpperCase(ch)
判断字符是否为小写:Character.isLowerCase(ch)
2.2 字母大小写转换
1) 调用函数 大写转小写:str.toLowerCase(); //使用toLowerCase()方法实现小写转换
小写转大写:str.toUpperCase(); //使用toUpperCase()方法实现大写转换
2) 习题实战
709. 转换成小写字母
3. 字符串替换
replace(old, new, max)
参数解释:
old → 旧字符串,将被替换的子字符串。
new →新字符串,用于替换old子字符串。
max → 可省略,默认全部替换,可选字符串,替换次数不超过max次。(这个参数一般不常用)
1) 使用方法
比如又一个字符串:str = “I love china”;
str = str.replace(“I”, “WE”);
替换后的str = ”WE love china";
4. 将变量转为字符串
.toString()、String.valueOf(待转对象);
5. 将字符串转换为字符型数组
1) char[] ch = str.toCharArray();
2) 其次我们读取单个字符可以这样写:
for(int i = 0;i < str.length();i++){
char ch = str.charAt(i);
}
6. 对字符串进行操作
6.1 字符串内容追加
1) 定义String Buffer (或者 StringBuilder)类
StringBuffer sb = new StringBuffer();
//StringBuilder sb = new StringBuilder();
这两者前者线程安全后者效率高。
2)调用append() 函数
sb.append(追加对象);
6.2 字符串内容反转
sb.reverse(); // 最后需要使用sb.toString();返回String 类型
7. String、char 数组和 int 之间的互相转换
7.1 String 转 char 数组
String str = "abc";
char nums[] = str.toCharArray();
// 另外提一个直接转成char字符,括号内是下标
char s = str.charAt(0);
7.2 char 数组转 String
char nums[] = {'a','b','c'};
String str = String.valueOf(nums);
7.3 String 转 int
String str = "123";
int num = Integer.parseInt(str);
小提示:一般有些题目会有字符串的相加,里面是数字,如果你直接使用这个方法去做,如果数字十分大会超过int的取值范围,所以慎用。
7.4 int 转 String
int num = 123;
String str1 = num+"";
String str2 = String.valueOf(num);
String str3 = Integer.toString(num);
7.5 char 类型转 int
char s1 = '1';
int a2 = s1 - '0';
这一小节参考了下面这篇文章:
Java中String、char数组和int之间的互相转换
8. split() 函数的用法
Java中的 split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回;在刷题的过程中我们或许需要使用到这个函数,下面通过例子来看怎么使用。
以Leetcode 习题 1154. 一年中的第几天 为例子
比如题目中有这样的字符串:date = “2019-01-09”
这时候我们需要获取到它的年月日,这时候我们就需要使用split() 函数了。
// 首先将date中的"-"给去掉,然后返回的结果就是一个不含"-"的字符数组
String[] split = date.split("-");
// 获取年,字符转整形
int year = Integer.valueOf(split[0]);
// 获取月
int month = Integer.valueOf(split[1]);
// 获取日
int day = Integer.valueOf(split[2]);
其它的一些用法可参考下面这篇文章
Java中的split函数的用法
未完待续....