Java中的字符串—复杂字符串的处理
前言
Hello,好久不见。本期来和大家一起分想一下Java中关于相对复杂的字符串的处理,希望能够对你有所帮助。点个赞呗!
(本文中如有任何错误的观点,还请路过的大佬不吝赐教,感激不尽!)
一、字符串的连接
上期内容我们写到Java中的字符串,对于已声明的字符串,我们可以对其进行相关的操作。而字符串的连接属于众多字符串的处理中比较简单的一种,它用于字符串之间的连接,也可以使字符串与其他类型连接。
1.1连接多个字符串
使用“+”运算符可实现多个字符串的连接功能,同样,在定义一个字符串时也可以使用该符号进行连接。
代码示例:
public class Demo { //创建类
public static void main(String[] args) { //主方法
String strOne = new String("Hello"); //创建String类型对象strOne
String strTwo = new String("World"); //创建String类型对象strTwo
String str = strOne + " " + strTwo; //将两个对象拼接然后赋值给str
//打印输出
System.out.println(str);
}
}
运行结果:
除此之外,在Java中,String类也提供了另一个方法,它就是concat(),他的作用是将一个字符串连接到另一个字符串后面,然后返回新的字符串。语法如下:
语法:
字符串1.concat(字符串2);
代码示例:
/**
* 测试Concat()方法类
*/
public class TestconcatMethod { //创建类
public static void main(String[] args) { //主方法
String strOne = new String("Hello");
String strTwo = new String("CSDN");
//使用concat()方法
String str = strOne.concat(strTwo);
//打印输出
System.out.println(str);
}
}
运行结果:
1.2连接其他数据类型
字符串也可以同其他基本数据类型进行连接,我们一起来尝试一下。
代码示例:
/**
* 输出个人信息类
*/
public class PrintMassage { //创建类
public static void main(String[] args) { //主方法
String name = "7旅病娘"; //创建String类型的变量,用来存储名字
int age = 18; //创建int类型的变量,用来存储年龄
char sex = '男'; //创建char类型的变量,用来存储性别
//
// 创建字符串对象
String massage = "姓名:\t" + name + "\n年龄:\t" + age + "\n性别:\t" + sex;
//打印输出个人信息
System.out.println(massage);
}
}
创建字符串对象massage时,使用“+”运算符将多个字符串连接成一个新的字符串,在使用该运算符连接字符串和int(或者double等)类型数据时候,该运算符会将其自动转换成String类型。这里age和sex都不是字符串,当它们与字符串连接时会自动调用toString()方法将其转换成字符串形式。我们一起来看一下运行结果。
运行结果:
注意:
只要使用“+”运算符的一个操作数是字符串,编译器就会将另一个操作数转换成字符串的形式。还有,在使用该运算符连接字符串的时候,如果用到了圆括号,那么要将运算符优先级考虑进去。所以应该谨慎地将其他数据类型与字符串连接,以免出现意想不到的结果。
二、获取字符串的信息
2.1获取字符串的长度
获取字符串的长度其实很简单,它只需要我们调用一个方法。使用String类的length()方法即可以获取声明字符串对象的长度。语法如下:
语法:
str.length();
代码示例:
/**
* 测试String类中的length()方法类
*/
public class Test { //创建类
public static void main(String[] args) { //主方法
String str = "Hello World";
//调用String类中的length()方法
int strSize = str.length();
//输出该字符串的长度
System.out.println(strSize);
}
}
Length()方法中返回字符串的长度包括字符串中的空格。
运行结果:
2.2字符串查找
Java的String类中提供了两种查找字符串的方法,它们分别是indexOf()和lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。indexOf()方法返回的是搜索的字符或字符串首次出现的位置,lastIndexOf()方法返回的是搜索的字符或者字符串最后一次出现的位置。
(1)indexOf(String str)
该方法用来返回参数字符串str在指定字符串中首次出现的索引位置。当调用字符串的indexOf()方法时,会从当前位置的开始搜索str的位置;如果没有检索到字符串str,该方法的返回值则是-1。
语法:
str.indexOf(substr)
- str:表示任意字符串对象
- substr:表示要搜索的字符串
代码示例:
/**
* 该类用于测试indexOf()方法
*/
public class TestOne { //创建类
public static void main(String[] args) { //主方法
String str = "Hello World"; //创建一个字符串
int size = str.indexOf("o"); //调用indexOf()方法
//输出size的值
System.out.println(size); //输出size的值等于4
}
}
要深刻理解字符串的索引位置和字符串的下标,在计算机中String对象是用数组表示的。字符串的下标是 0~length()-1。
(2)lastIndexOf()
该方法是用于返回指定字符串最后一次出现索引的位置。当调用字符串的lastIndexOf()方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回-1。
语法:
str.lastIndexOf(substr)
- str:表示任意字符串对象
- substr:要搜索的字符串
代码示例:
/**
* 这个类用于测试lastIndex()方法
*/
public class TestTwo { //创建类
public static void main(String[] args) { //主方法
String str = "Hello World";
//调用lastIndexOf()方法,将索引位置赋值给变量size
int sizeOne = str.lastIndexOf("W");
//输出sizeOne
System.out.println("W字符在字符串str中索引的位置是:" + sizeOne);
//调用lastIndexOf()方法,将索引位置赋值给变量size
int size = str.lastIndexOf("");
//输出size
System.out.println("空字符在字符串str中的索引位置是:" + size);
//输出字符串str的长度
System.out.println("字符串str的长度是:" + str.length());
}
}
运行结果:
注意:
如果lastIndexOf()方法中参数是空字符串(注意没有空格),则返回的结果与调用该字符串的length()方法的返回结果相同。
2.3获取指定索引位置的字符
使用charAt()方法可以将指定索引处的字符返回。
语法:
str.charAt(int index)
- str:任意字符串
- index:整型值,用于要返回的数组的下标
代码示例:
/**
* 该类用于测试charAt()方法
*/
public class TestThree { //创建类
public static void main(String[] args) { //主方法
String str = "Hello World"; //创建一个字符串
//调用charAt()方法,返回索引位置是6的字符
char mychar = str.charAt(6);
//输出结果
System.out.println(mychar);
}
}
运行结果:
三、字符串操作
在Java中,String类中包含了很多方法,允许程序员进行操作来满足实际编程的需要,一起来学习一下几种常见的字符串操作。
3.1获取子字符串
通过String类的subString()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,并且明确字符串的下标是从0开始的。
SubString()方法被两种不同的方法重载,来满足不同的需要。
(1)subString(int beginIndex)
该方法返回的是从指定索引位置开始截取直到该字符串结尾的子串
语法:
- str.subString(int beginIndex)
- str:任意字符串
- beginIndex:指定从某一索引处开始截取字符串
代码示例:
/**
* 该类用于测试subString(int beginIndex)方法
*/
public class TestFour { //创建类
public static void main(String[] args) { //主方法
String str = "Hello World"; //创建一个字符串
//调用subString(int beginIndex)方法,获取字符串
String subStr = str.substring(3);
//输出结果
System.out.println(subStr);
}
}
运行结果:
注意:
在字符串中,空格占据一个索引位置
(2)subString(int beginIndex, int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串
语法:
subString(int beginIndex, int endIndex)
- beginIndex:开始截取字符串的索引位置
- endIndex:子字符串在整个字符串中的结束位置
代码示例:
/**
* 该类用于测试subString(int beginIndex, int endIndex)方法
*/
public class TestFive { //创建类
public static void main(String[] args) { //主方法
String str = "Hello World"; //创建一个字符串
//调用subString(int beginIndex, int endIndex)方法,对字符串进行截取
String subStr = str.substring(0,5);
//输出结果
System.out.println(subStr);
}
}
运行结果:
3.2去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。
语法:
str.trim()
- str:任意字符串对象
代码示例:
/**
* 该类用于测试trim()方法
*/
public class TestSix { //创建类
public static void main(String[] args) { //主方法
String str = " Hello World "; //创建一个字符串
//调用length()方法,输出字符串的长度
System.out.println("字符串原来的长度:" + str.length());
//调用trim()方法,输出str去掉前导和尾部的空格后的结果
System.out.println("去掉空格后的长度:" + str.trim().length());
}
}
运行结果:
3.3字符串替换
使用replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。
语法;
str.replace(char oldChar,char newChar)
- oldChar:要替换的字符或者字符串
- newChar:用于替换原来字符串的内容
replace()方法返回的结果是一个新的字符串。如果字符串oldChar没有出现在该对象表达式中的字符串系列中,则将原字符串返回。
代码示例:
/**
* 测试replace()方法的类
*/
public class TestSeven { //创建类
public static void main(String[] args) { //主方法
String str = "hello World"; //创建一个字符串
//调用replace()方法,将字符'h'替换成'H',返回新的字符串newStr
String newStr = str.replace("h","H");
//输出结果
System.out.println(newStr);
}
}
运行结果:
注意:
如果要替换的字符oldChar在字符串中多次重复出现,replace()方法会将所有的oldChar替换成newChar。
还有,要替换的字符oldChar的大小写要和原字符串中字符的大小写保持一致,否则将不能成功的替换。
3.4判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断是否以指定内容开始或者结束,这两个方法的返回值类型都为boolean类型。
(1)str.startsWith()方法
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串
语法:
str.startsWith(String prefix)
- 其中,prefix指作为前缀的字符。
(2)str.endWith()
该方法用于判断当前字符串是否为已给定的子字符串结束。
语法:
str.endWith(String suffix)
- 其中,suffix指作为前缀的字符
代码示例:
/**
* 该类用于测试str.startsWith()方法和str.endWith()方法
*/
public class TestEigth {
public static void main(String[] args) {
String num1 = "22045612"; //创建字符串num1
String num2 = "21304578"; //创建字符串num2
boolean a1 = num1.startsWith("22"); //判断字符串num1是否以22开头
boolean a2 = num1.endsWith("78"); //判断字符串num1是否以78结尾
boolean b1 = num2.startsWith("22"); //判断字符串num2是否以22开头
boolean b2 = num2.endsWith("78"); //判断字符串num2是否以78结尾
//输出信息
System.out.println("字符串num1是以“22”开头吗" + a1);
System.out.println("字符串num1是以“78”结尾吗" + a2);
System.out.println("字符串num1是以“22”开头吗" + b1);
System.out.println("字符串num1是以“78”结尾吗" + b2);
}
}
运行结果:
3.5按照字典顺序比较两个字符串
compareTo()方法为按照字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按照字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按照字段顺序,此String对象位于参数之前,则比较结果为一个负整数;如果按照字典顺序,此String对象位于参数字符串之后,则比较结果为一个正整数;如果两个字符串相等,则结果为0。
语法:
str.compareTo(String otherstr)
- 其中,str、otherstr表示要比较的两个字符串对象。
注意:
该方法只有在equals(Object)方法返回true时才返回0。
代码示例:
/**
* 该类用于测试compareTo()方法
*/
public class TestNine { //创建类
public static void main(String[] args) { //主方法
//创建三个用来比较的字符串
String str1 = new String("a");
String str2 = new String("b");
String str3 = new String("c");
//输出比较结果
System.out.println(str1 + " compareTo " + str2 + ":" + str1.compareTo(str2));
System.out.println(str1 + " compareTo " + str3 + ":" + str1.compareTo(str3));
}
}
运行结果:
3.6字符串的分割
使用split()方法可以使字符串按照指定的分割符号或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。split()方法提供了以下两种分割形式。
(1)split(String sign)
该方法可根据给定的分割符对字符串进行拆分
语法:
str.split(String sign)
- 其中,sign为分割字符串的分割符,也可以使用正则表达式
注意:
没有统一的对字符进行分割的符号。如果想定义多个分割符,可使用符号(|)。例如(,|=),表示分割符分别为(,)和(=)
(2)split(String sign,int limit)
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的字数。
语法:
str.split(String sign,int limit)
- sign:分割字符串的分割符,也可以使用正则表达式。
- limit:限制的分割次数
代码示例:
/**
* 该类用于测试split()方法
*/
public class TestTen { //创建类
public static void main(String[] args) { //主方法
String str = "192.168.0.1"; //创建字符串
String[]firstArray = str.split("\\."); //按照“.”进行分割,使用转义字符“\\.”
String[]secondArray = str.split("\\.",2); //按照“.”进行两次分割,使用转义字符“\\.”
//输出str原值
System.out.println("str的原值为:[" + str + "]");
//输出全部分割结果:
System.out.println("全部分割结果:");
for (String a:firstArray) {
System.out.println("[" + a + "]");
}
System.out.println(); //换行
//输出分割两次的结果
System.out.println("分割两次的结果:");
for (String a:secondArray) {
System.out.println("[" + a + "]");
}
System.out.println(); //换行
}
}
运行结果:
本期内容就到这里,希望有所帮助!!!
关注我,持续更新!!!