文章目录
String简介
在计算机的世界中,很多时候离不开字符串的处理,因为从纸质的内容变成计算机数据这个过程的原始数据都是字符串,所以很多时候我们遇到的数据处理都是在操作字符串,所以处理字符串也是一项非常使用的技能。
在java中String字符串也是对象,所以它也包含数据和方法。字符串拥有的方法非常多,那是不是都要掌握呢?答案当时不是啦,事实上我们只要掌握其中使用频率最高的一些方法就已经足够了。
字符串长度length
字符串长度十分实用,比如说我们发微博限制140个字,那就要计算字的个数,这个个数就可以通过字符串的长度方法来完成。语法如下:
public static void main(String[] args) {
String message = "今天我在学习 Java 字符串";
// 调用字符串的长度方法得到长度
int size = message.length();
//长度是15,空格也算一个长度
System.out.println(size);
}
取出字符串中的一个字charAt
一个字符串,比如:“Hello Java”,我们想取出第二个字,那么就可以实用charAt(index),index就是具体的坐标(和数组一样,从0开始的),所以第二字的index值是1.
public static void main(String[] args) {
String message = "Hello Java";
// 取出第一个字
char str = message.charAt(0);
System.out.println(str);
// 取出第二个字
str = message.charAt(1);
System.out.println(str);
}
去掉左右多余的空格trim
通过trim()方法可以去掉字符串左右的空格,得到一个新的字符串.也就是说原始的字符串执行trim()方法后并不会改变自己的值,而是得到一个新的字符串。
public static void main(String[] args) {
String str = " 优课达 ";
// 打印一下现在的length
System.out.println(str+"是:"+str.length());
// 处理一下去空格
String newStr = str.trim();
// 打印一下新字符串的length——3
System.out.println(newStr+"是:"+newStr.length());
// 对比再打印一下老的字符串的length——5
System.out.println(str+"的长是:"+str.length());
}
查找字符串indexOf
indexof(“字符串”)这个方法就是解决这类问题的,indexOf方法接受一个String字符串,当调用这个方法的时候,就会去文本中去查找第一个匹配到的坐标索引值,所以我们可以得到int数字类型。我们可以根据这个int数字的值来判断是否匹配。
如果返回值是-1,说明不匹配,如果返回值!=-1,那么说明匹配到了。
public static void main(String[] args) {
String str = "Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,java广泛应用于企业级Web应用开发和移动应用开发。";
int index = str.indexOf("Java");
if(index!=-1){
System.out.println("匹配到了Java,索引位置是"+index);
}else{
System.out.println("没有匹配到了Java");
}
}
如果想找到第二个出现java的位置,该怎么办?
这就要使用indexOf方法的一个新的调用方式:indexOf(“字符串”,“开始索引值”),第二个参数是一个数字类型,用于设定从什么位置开始查。所以我们找到第一个匹配到的索引+匹配字符串长度就是开始值了,这个时候查找到的就是第二个匹配内容了。代码实现如下:
public static void main(String[] args) {
String str = "Java是一种广泛使用的计算机编程语言,于1995年5月以Java的名称正式发布。";
//第一个java的index是0
int index = str.indexOf("Java");
index = str.indexOf("Java", index + 4);
System.out.println("第二次匹配到了Java,索引位置是" + index);
}
字符串拼接substring
如果有时候我们想得到某个匹配到的字符串之后的内容,就要用到substring这个字符串拼接方法了。
substring方法有两种调用方式,一种是:** substring(开始索引,结束索引) **,这个方法执行的结果说就是拼接新的一个字符串,从开始索引开始(含这个值)到结束索引结束(不含);还有一种是substring(开始索引),这个方法执行的结果就是从开始索引开始(含这个值)一直到结束。
例如想得到上段文本第一个java之后的内容,则代码实现如下:
String str = "Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,java广泛应用于企业级Web应用开发和移动应用开发。";
int index = str.indexOf("Java");//0
if (index != -1) {
System.out.println("匹配到了Java,索引位置是" + index);
String newStr = str.substring(index+4);
System.out.println(newStr);
} else {
System.out.println("没有匹配到了Java");
}
字符串开始和结束内容判断startsWith/endsWith
我们在电脑上经常会存放各种文件,这个时候就会有一个需求,根据文件名来判断文件格式,比如是不是word文档。这个时候就要借助endsWith方法,endWith(“字符串”),用于判断是否以该字符串结束的,所以返回类型是boolean,我们根据返回值类型就可以判断了。
public static void main(String[] args) {
String fileName = "报告.doc";
if(fileName.endsWith(".doc")){
System.out.println("是word文档");
}
}
startWith和endsWith语法一致,不同的是startWith判断的是文本开头是不是匹配内容,比如说,我们想判断一个网址是不是安全的地址,那么我们就可以使用statrWith(“https”)来判断。
public static void main(String[] args) {
String url = "https://www.youkeda.com";
if(url.startsWith("https")){
System.out.println("网址是安全的");
}
}
字符串替换replaceAll
replaceAll(“要替换的值”,“新值”),replaceAll方法有两个字符串参数,第一个代表的是要替换的值,第二个代表的是新值,这个执行后会得到一个新的字符串(原始的字符串不会变哦)。
public static void main(String[] args) {
String str = "Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,java广泛应用于企业级Web应用开发和移动应用开发。";
String newStr = str.replaceAll("Java","Python");
System.out.println(newStr);
System.out.println(str);
}
通过replaceAll()方法,我们还可以删除指定内容,只要将新值换成空格就可以了,比如我们想去掉文件的后缀名。
public static void main(String[] args) {
String fileName = "报告.doc";
String name = fileName.replaceAll(".doc","");
System.out.println(name);
}
字符串分割split
很多时候,我们常常会处理有格式的文本数据,比如这样的
姓名|年龄|性别
张三|20|男
李四|18|男
小花|18|女
多数处理这样的数据,会先把这种文本数据变成数组,每一行作为一条记录,从一个文本变成数组数据,那就需要split(“分割字符串”),注意这个字符字符串可以是字符串,也可以是特殊的符号,比如说换行的符号是\n,值得注意是,‘.’ ‘|’ ‘*’ 这三个字符如果作为分割符,那么就需要加上‘\’ ,比如str.split("\|"),spilt方法执行的结果是返回一个字符串数组对象,具体代码实现如下:
public static void main(String[] args){
String text = "姓名|年龄|性别\n张三|20|男\n李四|18|男\n小花|18|女";
// 使用 split 进行换行符的分割,得到一个新的数组对象
String[] data = text.split("\n");
// 因为第一行是标题不是数据,所以我们需要把长度-1
// (注意要使用小括号包围,因为要先计算长度再组合字符串)
System.out.println("共有:"+(data.length-1)+" 条记录");
}
我们还可以继续分割每一行的数据,具体代码实现如下:
public static void main(String[] args){
String text = "姓名|年龄|性别\n张三|20|男\n李四|18|男\n小花|18|女";
// 使用 split 进行换行符的分割,得到一个新的数组对象
String[] data = text.split("\n");
// 因为第一行是标题不是数据,所以我们需要把长度-1
// (注意要使用小括号包围,因为要先计算长度再组合字符串)
System.out.println("共有:"+(data.length-1)+" 条记录");
// 忽略第一行标题数据,所以我们把 i 设为1,从第二条记录开始
for(int i=1;i<data.length;i++){
// 使用 \\| 进行字符串分割,得到一个新数组对象
String[] lines = data[i].split("\\|");
System.out.println("姓名:"+lines[0]+" 年纪:"+lines[1]+" 性别:"+lines[2]);
}
}
大小写转化toUpperCase/toLowerCase
toUpperCase()和toLowerCase()方法都没有参数,它的作用分别就是把字符中的字母全部变成大写和小写,并且返回出新字符串数据。示例如下:
public static void main(String[] args) {
String text = "ZhanSan";
// 把拼音全部转化为大写字母
String enName = text.toUpperCase();
System.out.println(enName);
}
字符串比较equals
在java中比较两个字符串是否相同不是用“==”,而是使用equals(“被比较的字符串”)方法。
bash
public static void main(String[] args) {
String text = "字符串";
// 使用 equals 方法判断是否相同
if (text.equals("字符串")) {
System.out.println("equals 方法字符串相等");
}
// 前后顺序无所谓,下面代码是一样的
if ("字符串".equals(text)) {
System.out.println("equals 方法字符串相等");
}
}
数字和字符串转化Interger.parseInt
字符串转化为数字
在java中我们可以使用Interger这个对象的parseInt方法进行处理,这个方法的作用就是让字符串变成数字。
bash
public static void main(String[] args) {
String text = "123";
// 转化字符串为数字
int a = Integer.parseInt(text);
System.out.println(a);
// 转化字符串为数字
a = Integer.parseInt("100");
System.out.println(a);
}
数字转化为字符串
- 方法一:利用“+”
public static void main(String[] args) {
int a = 100;
int b = 20;
//使用空字符串相加数字,会自动变成字符串类型
String str = ""+a+b;
String str2=a+b+""
System.out.println(str); //10020
System.out.println(str2); //120
}
- 方法二 :利用String.valueOf()
valueOf方法参数接受数字、浮点数、布尔类型转化为字符串
public static void main(String[] args) {
int a = 100;
//使用valueOf强制把数字转化为字符串
String str = String.valueOf(a);
System.out.println(str);
}