【今日】
少年的旅途应是星辰大海
目录
编辑
字符串操作
一 获取子字符串
1.1 substring(int beginIndex)
1.2 substring(int beginIndex,int endIndex)
二 去除空格
2.1trim()方法
2.2 replaceAll()方法
三 字符串替换
四 判断字符串的开始与结尾
4.1startsWith()方法
4.2endsWith()方法
五 判断字符串是否相等
5.1 equals()方法
5.2equalsgnoreCase()方法
六 按字典顺序比较两个字符串
七 字母大小写转换
7.1toLowerCase()方法
7.2toUpperCase()方法
八 字符串的分割
8.1 split(String sign)方法
8.2split(String sign,int limit)
字符串操作
一 获取子字符串
通过String类的substring()方法可对字符串进行截取。
1.1 substring(int beginIndex)
该方法返回的是从指定位置的索引位置开始截取到该字符串结尾的子串。语法如下:
substring(int beginIndex)
■beginIndex 指定从某一索引开始截取字符串
截取字符代码如下:
String str="Hello world";
String substr = str.substring(3);
在字符串中,空格占用一个索引位置。
【实列】 :
public class Demo {
public static void main(String[] args) {
String str="Hello world";
String substr=str.substring(4);
System.out.println(substr);
}
}
1.2 substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。语法如下:
substring(int beginIndex,int endIndex)
■ beginIndex: 开始截取子字符串的索引位置
■ endIndex : 子字符串在整个字符串结束的位置
【实列】 :
public class Demo {
public static void main(String[] args) {
String str="Hello world";
String substr=str.substring(4,9);
System.out.println(substr);
}
}
二 去除空格
2.1trim()方法
trim()方法返回字符串的副本,忽略前导空格和尾部空格。语法如下:
str.trim()
■str :为任意字符串对象
【实列】 :
public class Demo {
public static void main(String[] args) {
String str=" ABCD ";
String tstr=str.trim();
System.out.println("["+str+"]");
System.out.println("["+tstr+"]");
}
}
2.2 replaceAll()方法
去除字符串中所有空白内容,语法如下:
str.replaceAll("\\s" , "" );
■\\s 正则表达式
■"" 空内容字符串
【实列】 :
public class Demo {
public static void main(String[] args) {
String str=" A B C D ";
String shortb=str.replaceAll("\\s","");
System.out.println("["+str+"]");
System.out.println("["+shortb+"]");
}
三 字符串替换
replace()方法可以实现将指定的字符或字符串换成新的字符或字符串。语法如下:
str.replace(CharSequence target,CharSequence replacement)
■target 要替换的字符或字符串
■replacement 用于替换原来字符串的内容
replace()方法返回的结果是一个新的字符串。如果字符或字符串没有出现在该对象表达式中的字符串序列中,则将原字符串返回。
【实列】 :
public class Demo {
public static void main(String[] args) {
String str="路口右转,在直行,然后在右转,你会发现";
String a=str.replace("右", "左");
System.out.println("原句为:"+str);
System.out.println("替换后:"+a);
}
}
四 判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。
4.1startsWith()方法
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。语法如下:
str.startsWith(string prefix);
■prefix 是指作为前缀的字符串
4.2endsWith()方法
该方法用于判断当前字符串是否为以给定的字符串结束。语法如下:
str.startsWith(String suffix);
■suffix 是指作为后缀的字符串
【实列】 :
public class Demo {
public static void main(String[] args) {
String str="Java学习.long.time";
boolean a=str.startsWith("Java");
boolean b=str.endsWith("Go");
System.out.println("字符串是否以Java开头:"+a);
System.out.println("字符串是否以Go结尾:"+b);
}
}
五 判断字符串是否相等
在此之前我们判断相等几乎都是用“==”来实现的,那么在字符串中可以实现吗?
我们来用代码实列实一下:
public class Demo {
public static void main(String[] args) {
String name1="Tome";
String name2="Tome";
System.out.println("name1=name2?");
System.out.println(name1==name2);
}
}
我们发现竟然相等了,那么“=="真的可以用来判断字符串是否相等吗?
我们换一种定义字符串的方法,用关键词new来给它分配空间:
public class Demo {
public static void main(String[] args) {
String name1=new String("Tome");
String name2=new String("Tome");
System.out.println("name1=name2?");
System.out.println(name1==name2);
}
}
我们发现又不相等了这是怎么回事呢?
这是因为“==”比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的。
第一个内存分配的情况:
这是因为JAVA虚拟机首先会在栈中的常量区中创建tome这个字符串变量,然后会自动创建一个匿名的字符串对象指向这个tome,最后将匿名字符串的地址交给name1引用,当我们让name2也引用字符串常量tom的时候呢,JAVA虚拟机会先到栈中的常量区里查找是否有相同的字符串常量,结果发现了有相同的字符串量,是吧?就直接把这个常量的匿名对象交给了name2,这样一来。name1和name2指向的就是同一个地址的字符串。
第二种情况:
首先创建了name1 和name2两个引用,然后用方法在追踪创建了new String的对象实体。并让两个引用的指向各自的对象实体,然后这两个对象实体又会分别在栈中创建字符串的字面值内容。从这个图我们可以明显的看出name1和name2这两个引用始终指向的是两个独立的内存区。
所以这里要比较两个字符串的内容是否相等,应使用equals()方法和equalsIgnoreCase()方法。
5.1 equals()方法
如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回ture。否则,返回false。语法如下:
str.equals(String otherstr);
■str,otherstr是要比较的两个字符串对象。
5.2equalsgnoreCase()方法
使用equals()方法对字符串比较时是区分大小写的,而使用equalsgnoreCase()方法 是在忽略了大小写的情况下比较两个字符串是否相等,返回结果认为boolean类型,语法如下:
equalsgnoreCase(String otherstr);
■str,otherstr是要比较的两个字符串对象。
public class Demo {
public static void main(String[] args) {
String name1=new String("LOOK");
String name2=new String("look");
System.out.println("equals()方法:");
System.out.print("name1=name2?:");
System.out.println(name1.equals(name2));
System.out.println("equalsIgnoreCasse()方法:");
System.out.print("name1=name2?:");
System.out.println(name1.equalsIgnoreCase(name2));
}
}
六 按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将String对象表示的字符序列与参数字符序列进行比较。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0.语法如下:
str.compareTo(String otherstr)
■str,otherstr是要比较的两个字符串对象。
【实列】:
public class Demo {
public static void main(String[] args) {
String name1=new String("Look");
String name2=new String("See");
System.out.println(name1.compareTo(name2));
}
}
七 字母大小写转换
String类的toLowerCase()方法可将字符串中的所有大写字母改写为小写字母,而toUpperCase()方法可将字符串中所有小写字母转换为大写字母。
7.1toLowerCase()方法
该方法是将字符串中所有的大写字母转换为小写字母。如果字符串中没有应该被转换的字符,那么返回原字符串。语法如下:
str.toLowerCase();
7.2toUpperCase()方法
该方法是将字符串中所有的小写字母转换为大写字母。如果字符串中没有应该被转换的字符,那么返回原字符串。语法如下:
str.toLowerCase();
【实际】:
public class Demo {
public static void main(String[] args) {
String str=new String("abc DEF");
String str1=str.toLowerCase();
String str2=str.toUpperCase();
System.out.println("原字符串:");
System.out.println(str);
System.out.println("使用toLowerCase()效果:");
System.out.println(str1);
System.out.println("使用toupperCase()效果:");
System.out.println(str2);
}
}
八 字符串的分割
使用split()方法可以使字符串按指定的分割字符或字符串进行分割,并将分割后发结果存放在字符串数组中。split()方法提供了以下两种分割形式。
8.1 split(String sign)方法
该方法可以根据给定的分割符对字符串进行分割拆分。语法如下:
str.split(String sign)
■sign 为分割字符串的分隔符,也可以使用正则表达式。
没有统一的对字符进行分割的符号。如果想定义多个分隔符,可以使用符号“|”。例如,“|=”表示分割符号分别为",”和“=”号。
8.2split(String sign,int limit)
该方法可根据给定的分割符对字符串进行拆分,并限定拆分次数。语法如下:
str.split(String sign,int limit)
■sign 为分割字符串的分隔符,也可以使用正则表达式。
■limit 限制的分割次数
【实列】
public class Demo {
public static void main(String[] args) {
String str="1958.56.85.61.2";
String []a=str.split("\\.");//用转义字符
String []b=str.split("\\.", 2);//分割成俩段
System.out.println("第一种");
for(String x:a) {
System.out.print("["+x+"]");
}
System.out.println();
System.out.println("第二种");
for(String c:b) {
System.out.print("["+c+"]");
}
}
}