字符串比较
1.比较两个字符串是否相等(区分大小写的比较)
(1)自己实现的版本
public class MyString {
public static void main(String[] args) {
String str1 = "HelloWorld";
String str2 = "HelloWorlds";
System.out.println(isEqueals(str1 , str2));
}
public static boolean isEqueals(String str1 , String str2){
char[] arr1 = str1.toCharArray();//将字符串转为字符数组
char[] arr2 = str2.toCharArray();
//字符串长度相等时,进入循环,比较对应字符是否相等
while(arr1.length == arr2.length){
for(int i = 0; i < arr1.length;i++){
//在循环内的对应字符有不相等的直接返回false
if(arr1[i] != arr2[i]){
return false;
}
}
//长度相等时,对应字符没有不同的,则说明字符串是相等的,返回true
return true;
}
//字符串长度不相等时,跳出循环,并返回false
return false;
}
}
(2)String类自带*equals()*
```java
public class MyString {
public static void main(String[] args) {
String str1 = "HelloWorld";
String str2 = "helloWorld";
System.out.println(str1.equals(str2));
}
}
运行结果:
不区分大小写的比较
public class MyString {
public static void main(String[] args) {
String str1 = "HelloWorld";
String str2 = "helloWorld";
System.out.println(str1.equalsIgnoreCase(str2));
}
2.比较两个字符串的大小
(1)自己实现的版本
public static int myCompareTo(String str1 , String str2){
if(str1 == null || str2 == null){//参数校验
return -100; //有一个字符串为空时,则返回错误码-100
}
char[] arr1 = str1.toCharArray();
char[] arr2 = str2.toCharArray();
for(int i = 0; i < arr1.length && i <arr2.length;i++){
if(arr1[i] < arr2[i]){
return -1;
} else if(arr1[i] > arr2[i]){
return 1;
}
else return 0;
}
return 0;
}
测试:
public static void main(String[] args) {
String str1 = "helloWorld";
String str2 = "HelloWorld";
System.out.println(myCompareTo(str1 , str2));
}
public static void main(String[] args) {
String str1 = "HelloWorld";
String str2 = "HelloWorld";
System.out.println(myCompareTo(str1 , str2));
}
public static void main(String[] args) {
String str1 = "HelloWorld";
String str2 = "helloWorld";
System.out.println(myCompareTo(str1 , str2));
}
public static void main(String[] args) {
String str1 = null;
String str2 = "helloWorld";
System.out.println(myCompareTo(str1 , str2));
}
(2)String类自带版本compareTo()
public static void main(String[] args) {
String str1 = null;
String str2 = "helloWorld";
System.out.println(str1.compareTo(str2));
}
上面自己实现的字符串比较大小遇到空字符串返回-100,而在String类自带的compareTo()方法中,遇到空字符串直接抛出异常。
public static void main(String[] args) {
String str1 = null;
String str2 = "helloWorld";
System.out.println("A".compareTo("a"));
}
3.toCharArray()
将字符串转为字符数组
在以上两个方法中,皆有对toCharArray()的使用。
字符串查找
4.判断一个子字符串是否存在
contains() 存在返回true,不存在返回false
public static void main(String[] args) {
String str1 = "this is a simple love long";
String str2 = "love";
String str3 = "world";
System.out.println(str1.contains(str2));
System.out.println(str1.contains(str3));
}
indexOf(String str,int fromIndex) 存在返回该子字符串的首元素的索引,不存在返回-1
第一个参数为子字符串,第二个参数为开始检索的位置
public static void main(String[] args) {
String str1 = "this is a simple love song";
String str2 = "love";
String str3 = "world";
System.out.println(str1.indexOf(str2));
System.out.println(str1.indexOf(str3));
}
public static void main(String[] args) {
String str1 = "this is a simple love song";
String str2 = "love";
String str3 = "world";
System.out.println(str1.indexOf(str2,7));
System.out.println(str1.indexOf(str2,20));
}
字符串替换
replace(char oldChar,char newChar)
public static void main(String[] args) {
String str1 = "this is a simple love song";
System.out.println(str1.replace(" ","--"));
replaceAll(String regex,String replacement) 将regex全部替换掉
String str2 = "ccaccbeatifulccworld";
System.out.println(str2.replaceAll("c"," "));
replaceFirst(String regex,String replacement) 只替换掉第一个出现的regex
String str2 = "ccaccbeatifulccworld";
System.out.println(str2.replaceFirst("c"," "));
字符串拆分
split(String regex) regex正则表达式 在这里可以理解为,按照哪个字符进行拆分
String str4 = "name=Lily&age=18" ;
String[] rel = str4.split("&");
for(int i = 0;i < rel.length;i++){
String[] temp = rel[i].split("=");
System.out.println(temp[0] + ":" + temp[1]);
}
split(String regex,int limit) 第二个参数表示,将字符串最多拆分为几部分
String str1 = "this is a simple love song";
String[] rel = str1.split(" ",3);
for(String x:rel){
System.out.println(x);
}
字符串截取
substring(int begainIndex) 从指定的位置开始截取至最后一个元素
String str1 = "this is a simple love song";
System.out.println(str1.substring(22));
substring(int begainIndex,int endIndex) 截取指定区间的字符串(前闭后开区间)
String str1 = "this is a simple love song";
// System.out.println(str1.substring(22));
System.out.println(str1.substring(10,16));
字符串的其它操作
1.trim() 删除掉字符串两端的空格
String str1 = " this is a simple love song ";
System.out.print("[" + str1 + "]");
System.out.println();
System.out.println("[" + str1.trim() + "]");
*2.isEmpty()*判断字符串是否为空字符串
String str2 = "";
System.out.println(str2.isEmpty());
String str3 = " ";
System.out.println(str3.isEmpty());
String str4 = null;
System.out.println(str4.isEmpty());
可以看出,当字符串为null是,会抛出异常
*l3.length()*求字符串的长度 ps: 字符数组求长度的表达式为str.length(这里的length指属性),而字符串长度的表达式是调用一个方法length()
String str1 = " this is a simple love song ";
System.out.println(str1.length());