Java String类常用方法总结

length()

返回字符串对象的长度。

String string = "abcd";
int len = string.length();
System.out.println(len);

运行结果为:

4

charAt()

char charAt(int index) 返回指定索引处的char值(即截取一个字符)。

String str = "hello world";
char ch = str.charAt(6);
System.out.println(ch);

运行结果为:

w

compareTo()

String类中的compareTo()方法将返回两个字符串对象的比较结果。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数,如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。若相等,返回0。
不相等时,从两个字符串第1个字符开始比较,返回第一个不相等的字符差。如果较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。

String s1 = "abc";
String s2 = "abcd";
String s3 = "abcdfg";
String s4 = "1bcdfg";
String s5 = "b";
System.out.println(s1.compareTo(s2));
System.out.println(s1.compareTo(s3));
System.out.println(s1.compareTo(s4));//48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48)
System.out.println(s1.compareTo(s5));//-1 ("a"的ASCII码是97,"b"的ASCII码是98,所以返回-1)

运行结果为:

-1
-3
48
-1

substring()

在String类中有两个substring()方法,第一种如下:

substring(int start)

其中,start为要开始截取的位置的索引,方法将返回一个字符串,内容为原字符串从start位置开始到原字符串结束中间的数据。
如果start大于字符串的长度,将会抛出越界异常。

String str = "hello word!";
System.out.println(str.substring(1));
System.out.println(str.substring(3));
System.out.println(str.substring(6));

运行结果为:

ello word!
lo word!
word!

第二种substring()方法:

substring(int start, int end)

其中,start为开始位置索引,end为结束为止索引,方法将返回一个字符串,内容为原字符串从start位置开始到end位置结束中间的数据。
注:包括start位置,但不包括end位置

String str = "hello word!";
System.out.println(str.substring(1, 4));
System.out.println(str.substring(3, 5));
System.out.println(str.substring(0, 4));

运行结果为:

ell
lo
hell

indexOf(),lastIndexOf()

indexOf()方法用于在String类的对象中查找子字符串,方法返回一个整数值,为子字符串的开始位置,若存在多个子字符串,返回数值最小的整数值;如果没有找到子字符串,返回-1。

String str1 = "abcdefghijklmnabc";
System.out.println(str1.indexOf("c"));
System.out.println(str1.indexOf("x"));

运行结果为:

2
-1

indexOf()方法可以有两个参数,可以从指定的位置进行查找。
lastIndexOf()方法返回子串最后一次出现的位置。

equals()

在java中如果要判断两个基础数据类型是否相等,使用的是双等号,例如:1是否等于1,使用的就是1==1,而判断字符串是否相等需要使用equals方法,这是因为,每一个字符串都可能会有不同的内存地址,而 == 判断的是内存地址是否一致。而有很多情况,两个字符串的内存地址是不同的,但是字符串的值都是一致的,这样使用双等号就不能准确的验证他们是否相等了。

String str1 = new String("张三");
String str2 = new String("张三");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));

运行结果为:

false
true

split()

根据给定正则表达式的匹配拆分此字符串。
特殊情况:
| + * ^ $ / | [ ] ( ) - . \ 由于这些字符是正则表达式的一部分,因此在split方法中表示它们需要用转义符。

String str = "abc.def.ghi.jk";
String str1[] = str.split("\\.");
for(int i = 0; i < str1.length; i++)
	System.out.print(str1[i] + " ");

运行结果为:

abc def ghi jk 

String 常用方法总结

int length() 返回当前字符串的长度
int indexOf (String str) 返回str子字符串在该字符串中第一次出现的位置
int lastIndexOf(String str) 查找str子字符串中最后一次出现的位置
boolean equals(Object obj) 将该字符串与指定对象比较,返回true或false
String trim() 返回取出了前后空格的字符串
String[] split(String str) 将字符串按照str来分割,分割之后返回一个字符串数组
String toLowerCase() 将字符串中的大写全部转换为小写
String toUpperCase() 将字符串中的小写全部转换为大写

一些例子:

  1. 判断输入的Java文件名是否正确,判断邮箱格式是否正确。其中:合法的文件名应该以 .java 结尾;合法的邮箱名中至少要包含 @ , 并要求 @ 在 . 之前。
public void judge(String fileName, String email){
	if(fileName.lastIndexOf(".java") == fileName.length() - 5 && fileName.length() != 5)
		System.out.println("Java文件名正确");
	else
		System.out.println("Java文件名无效");
	if(email.indexOf(".") > email.lastIndexOf("@") && email.lastIndexOf("@") != -1)
		System.out.println("邮箱名正确");
	else
		System.out.println("邮箱名无效");
}
  1. 在data字符串寻找name出现的所有位置
public class NameSearch {
    public static void main(String[] args) { 
        Scanner scanner = new Scanner(System.in);
		String data = scanner.next();
		String name = scanner.next();
		int index = 0;
		while(data.indexOf(name, index) != -1) {
			index = data.indexOf(name, index);
			System.out.println(index);
			index += 1;			
		}
    }
}
  1. 输入一个标准的网址,输出其域名的主体;将该主体转换为大写,打印输出。
import java.util.Scanner;
public class StringTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		int index = str.indexOf(".");
		index ++;
		int index2 = str.indexOf(".", index);
		String str1 = str.substring(index, index2); //定位域名主体位于两个"."之间
		System.out.println(str1);
		String str2 = str1.toUpperCase();//小写转换成大写
		System.out.println(str2);
	}
}
发布了44 篇原创文章 · 获赞 0 · 访问量 823

猜你喜欢

转载自blog.csdn.net/Komatsu_1137/article/details/104089166
今日推荐