String类方法详细介绍
String类是Java中的引用数据类型,sun公司提供给了我们字符串操作的一些方法,以下是整理出的一些函数:
一、基本操作方法
方法 | 说明 |
charAt(int index) | 获取索引值index处对应的字符 |
length() | 获取String字符串的长度 |
codePointAt(int index) | 获取字符串在索引index处的Unicode值 |
codePointBefore(int index) | 获取字符串在索引index-1处的Unicode值 |
compareTo(String ss) | 原字符串与ss字符串每一个字符差值的和(对应Unicode值) |
indexOf(a) | 字符a在字符串中的第一个位置 |
lastIndexOf(a) | 字符a在字符串中的最后一个位置 |
concat(String s) | 原字符串与字符串s的拼接 |
contains(String s) | 原字符串是否包含字符串s |
endsWith(String S) | 判断是否以字符串S结尾 |
isEmpty() | 判断是否为空 |
matches(String s) | s是否是原字符串的正则表达式 |
String s = "我abcdefghijklmn";
String ss = "aabcdefghijkl105n";
char ch = s.charAt(0); //我
int ch1 = s.length(); //15
int ch2 = s.codePointAt(0); //25105
int ch3 = s.codePointAt(1); //97
int ch4 = s.codePointBefore(1); //25105
int ch5 = s.compareTo(ss); //25008
int ch6 = ss.indexOf('a'); //0
int ch7 = ss.lastIndexOf('a'); //1
String ch8 = s.concat("opqrst"); //我abcdefghijklmnopqrst
boolean ch9 = s.contains("我"); //true
boolean ch10 = s.endsWith("mn"); //true
boolean ch11 = s.isEmpty(); //false
boolean ch12 = s.matches("a"); //false
二、较复杂的一些方法
- getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin):
字符串复制方法,四个参数分别是:原字符串需要复制的开始索引、结束索引-1、存储字符数组、字符存储的开始位置。
代码示例:
String s = "我abcdefghijklmn";
char arr[] = new char[100];
s.getChars(0, s.length(), arr, 0); //我abcdefghijklmn
- 字符串比较
首先看一下第一种比较大小这类需求中的方法:
(1)不忽略字符串大小写情况下字符串的大小比较方法compareTo(another str)
格式:int result = str1.compareTo(str2);
输出三种比较结果:若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。
(2) 忽略字符串大小写情况下字符串的大小比较方法compareTOIgnoreCase(another str)
格式:int result = str1.compareToIgnoreCase(str2);
在忽略字符串大小写情况下,返回三种比较结果:输出三种比较结果:若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。
然后看一下第二种判别两种字符串是否相等(相等情况下必须保证二者长度相等)需求中的方法:
(1)不忽略字符串大小写情况下判别字符串相等的方法eaquals(another str)
格式:boolean result = str1.equals(str2);
当且仅当str1和str2的长度相等,且对应位置字符的Unicode编码完全相等,返回true,否则返回false
(2) 忽略字符串大小写情况下判别字符串相等的方法equalsIgnoreCase(another str)
格式:boolean result = str1.equals(str2);
示例代码:
String s1 = "我abcdefghijklmn";
String s2 = "我abcdefghijklmn";
String s3 = "aabcdefghijkl105n";
String s4 = "aabcdefghijkl105n";
int result1 = s1.compareTo(s2); //0
int result2 = s1.compareTo(s3); //25008
boolean result3 = s1.equals(s2); // true
boolean result4 = s1.equals(s3); //false
- 字符串与其它类型的转换
public class StringConvert {
public static void main(String args[]){
/***将字符串类型转换为其他数据类型***/
boolean bool = Boolean.getBoolean("false"); //字符串类型转换为布尔类型
int integer = Integer.parseInt("20"); //字符串类型转换为整形
long LongInt = Long.parseLong("1024"); //字符串类型转换为长整形
float f = Float.parseFloat("1.521"); //字符串类型转换为单精度浮点型
double d = Double.parseDouble("1.52123");//字符串类型转换为双精度浮点型
byte bt = Byte.parseByte("200"); //字符串类型转换为byte型
char ch = "棋哥".charAt(0);
/***将其他数据类型转换为字符串类型方法1***/
String strb1 = String.valueOf(bool); //将布尔类型转换为字符串类型
String stri1 = String.valueOf(integer); //将整形转换为字符串类型
String strl1 = String.valueOf(LongInt); //将长整型转换为字符串类型
String strf1 = String.valueOf(f); //将单精度浮点型转换为字符串类型
String strd1 = String.valueOf(d); //将double类型转换为字符串类型
String strbt1 = String.valueOf(bt); //将byte转换为字符串类型
String strch1 = String.valueOf(ch); //将字符型转换为字符串类型
}
}
- 字符串的截取、替换、划分
方法 | 介绍 |
substring(int beginindex, int endindex) | 截取出索引在beginindex 到 endindex-1 之间的字符串 |
split(String s) | 以s为节点划分 |
toLowerCase() | 将字符全部转化为小写 |
toUpperCase() | 将字符全部转化为大写 |
replace(String old, String new) | 字符串中的old字符串替换为new字符串 |
代码展示:
String s1 = "abcdededfgAAA";
String s = s1.substring(0,s1.length()); //abcdededfgAAA
String ss[] = s1.split("e");
for(int i = 0; i < ss.length;i ++)
{
System.out.print(ss[i] + "\t"); //abcd d dfgAAA
}
String s2 = s1.replace("e", "E"); //abcdEdEdfgAAA
System.out.println(s2);
参考文档:Java字符串String类操作方法详细整理