String类常用方法总结
1 public char charAt(int index);
返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。
如果索引指定的 char 值是代理项,则返回代理项值。
指定者:
接口 CharSequence 中的 charAt
参数:
index - char 值的索引。
返回:
此字符串指定索引处的 char 值。第一个 char 值位于索引 0 处。
抛出:
IndexOutOfBoundsException - 如果 index 参数为负或小于此字符串的长度。
2 public int compareTo(String anotherString)
按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0; compareTo 只在方法equals(Object) 返回 true 时才返回 0。
这是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引),要么长度不同,或者同时具备这两种情况。如果它们在一个或多个索引位置上的字符不同,假设 k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 < 运算符确定),其字典顺序在其他字符串之前。在这种情况下,compareTo 返回这两个字符串在位置 k 处两个char 值的差,即值:
this.charAt(k)-anotherString.charAt(k)
如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下, compareTo 返回这两个字符串长度的差,即值:
this.length()-anotherString.length()
指定者:
接口 Comparable<String> 中的 compareTo
参数:
anotherString -要比较的 String。
返回:
如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。
3 public int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。此方法返回一个整数,其符号与使用规范化的字符串调用 compareTo 所得符号相同,规范化字符串的大小写差异已通过对每个字符调用 Character.toLowerCase(Character.toUpperCase(character)) 消除。
注意,此方法不 考虑语言环境,因此可能导致在某些语言环境中的排序效果不理想。java.text包提供 Collators 完成与语言环境有关的排序。
参数:
str -要比较的 String。
返回:
根据指定 String 大于、等于还是小于此 String(不考虑大小写),分别返回一个负整数、0 或一个正整数。
从以下版本开始:
1.2
另请参见:
Collator.compare(String,String)
4 public String concat(String str)
将指定字符串连接到此字符串的结尾。
如果参数字符串的长度为 0,则返回此 String 对象。否则,创建一个新的 String 对象,用来表示由此 String 对象表示的字符序列和参数字符串表示的字符序列连接而成的字符序列。
示例:
"cares".concat("s")returns "caress"
"to".concat("get").concat("her")returns "together"
参数:
str -连接到此 String 结尾的 String。
返回:
一个字符串,它表示在此对象字符后连接字符串参数字符而成的字符。
5 public boolean contentEquals(StringBuffer sb)
将此字符串与指定的 StringBuffer 比较。当且仅当此 String 与指定 StringBuffer 表示相同的字符序列时,结果才为 true。
参数:
sb -要与此 String 比较的 StringBuffer。
返回:
如果此 String 与指定 StringBuffer 表示相同的字符序列,则返回 true;否则返回 false。
从以下版本开始:
1.4
6 public boolean contentEquals(CharSequence cs)
将此字符串与指定的 CharSequence 比较。当且仅当此 String 与指定序列表示相同的 char 值序列时,结果才为 true。
参数:
cs -要与此 String 比较的序列
返回:
如果此 String 与指定序列表示相同的 char 值序列,则返回 true;否则返回 false。
从以下版本开始:
1.5
7 public static String copyValueOf(char[] data)
返回指定数组中表示该字符序列的 String。
参数:
data -字符数组。
返回:
一个 String,它包含字符数组的字符。
8 public static String copyValueOf(char[] data,int offset,intcount)
返回指定数组中表示该字符序列的 String。
参数:
data -字符数组。
offset -子数组的初始偏移量。
count -子数组的长度。
返回:
一个 String,它包含字符数组的指定子数组的字符。
9 public boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
参数:
suffix -后缀。
返回:
如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true;否则返回 false。注意,如果参数是空字符串,或者等于此String 对象(用 equals(Object) 方法确定),则结果为 true。
10 public boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。
参数:
prefix -前缀。
返回:
如果参数表示的字符序列是此字符串表示的字符序列的前缀,则返回 true;否则返回 false。还要注意,如果参数是空字符串,或者等于此 String 对象(用 equals(Object) 方法确定),则返回 true。
从以下版本开始:
1.0
11 public boolean startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
参数:
prefix -前缀。
toffset -在此字符串中开始查找的位置。
返回:
如果参数表示的字符序列是此对象从索引 toffset 处开始的子字符串前缀,则返回 true;否则返回 false。如果 toffset 为负或大于此 String对象的长度,则结果为 false;否则结果与以下表达式的结果相同:
this.substring(toffset).startsWith(prefix)
12 public boolean equals(Object anObject)
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
覆盖:
参数:
anObject -与此 String 进行比较的对象。
返回:
如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false。
另请参见:
compareTo(String), equalsIgnoreCase(String)
13 public boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。
在忽略大小写的情况下,如果下列至少一项为 true,则认为 c1 和 c2 这两个字符相同。
- 这两个字符相同(使用 == 运算符进行比较)。
- 对每个字符应用方法 Character.toUpperCase(char) 生成相同的结果。
- 对每个字符应用方法 Character.toLowerCase(char) 生成相同的结果。
参数:
anotherString -与此 String 进行比较的 String。
返回:
如果参数不为 null,且这两个 String 相等(忽略大小写),则返回 true;否则返回 false。
另请参见:
14 public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
当此字符串不能使用给定的字符集编码时,此方法的行为没有指定。如果需要对编码过程进行更多控制,则应该使用 CharsetEncoder类。
参数:
charsetName -受支持的 charset 名称
返回:
所得 byte 数组
抛出:
UnsupportedEncodingException - 如果指定的字符集不受支持
从以下版本开始:
JDK1.1
15 public byte[] getBytes(Charset charset)
使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
此方法总是使用此字符集的默认替代 byte 数组替代错误输入和不可映射字符序列。如果需要对编码过程进行更多控制,则应该使用CharsetEncoder 类。
参数:
charset -用于编码 String 的 Charset
返回:
所得 byte 数组
从以下版本开始:
1.6
16 public byte[] getBytes()
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
当此字符串不能使用默认的字符集编码时,此方法的行为没有指定。如果需要对编码过程进行更多控制,则应该使用 CharsetEncoder类。
返回:
所得 byte 数组
从以下版本开始:
JDK1.1
17 public void getChars(int srcBegin, int srcEnd,char[] dst,intdstBegin)
将字符从此字符串复制到目标字符数组。
要复制的第一个字符位于索引 srcBegin 处;要复制的最后一个字符位于索引 srcEnd-1 处(因此要复制的字符总数是 srcEnd-srcBegin)。要复制到 dst 子数组的字符从索引 dstBegin 处开始,并结束于索引:
dstbegin + (srcEnd-srcBegin) - 1
参数:
srcBegin -字符串中要复制的第一个字符的索引。
srcEnd -字符串中要复制的最后一个字符之后的索引。
dst -目标数组。
dstBegin -目标数组中的起始偏移量。
抛出:
IndexOutOfBoundsException - 如果下列任何一项为 true:
- srcBegin 为负。
- srcBegin 大于 srcEnd
- srcEnd 大于此字符串的长度
- dstBegin 为负
- dstBegin+(srcEnd-srcBegin) 大于 dst.length
18 public int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。如果在此 String 对象表示的字符序列中出现值为 ch 的字符,则返回第一次出现该字符的索引(以 Unicode 代码单元表示)。对于 0 到 0xFFFF(包括 0 和0xFFFF)范围内的 ch 的值,返回值是
this.charAt(k) == ch
为 true 的最小 k 值。对于其他 ch 值,返回值是
this.codePointAt(k) == ch
为 true 最小 k 值。无论哪种情况,如果此字符串中没有这样的字符,则返回 -1。
参数:
ch -一个字符(Unicode 代码点)。
返回:
在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回 -1。
19 public int indexOf(int ch,int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
在此 String 对象表示的字符序列中,如果带有值 ch 的字符的索引不小于 fromIndex,则返回第一次出现该值的索引。对于 0 到 0xFFFF(包括 0 和0xFFFF)范围内的 ch 值,返回值是
(this.charAt(k) == ch) && (k >=fromIndex)
为 true 的最小 k 值。对于其他 ch 值,返回值是
(this.codePointAt(k) == ch) && (k>= fromIndex)
为 true 的最小 k 值。无论哪种情况,如果此字符串中 fromIndex 或之后的位置没有这样的字符出现,则返回 -1。
fromIndex 的值没有限制。如果它为负,则与它为 0 的效果同样:将搜索整个字符串。如果它大于此字符串的长度,则与它等于此字符串长度的效果相同:返回 -1。
所有索引都在 char 值中指定(Unicode 代码单元)。
参数:
ch -一个字符(Unicode 代码点)。
fromIndex -开始搜索的索引。
返回:
在此对象表示的字符序列中第一次出现的大于或等于 fromIndex 的字符的索引;如果未出现该字符,则返回 -1。
20 public int indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。返回的整数是
this.startsWith(str, k)
为 true 的最小 k 值。
参数:
str -任意字符串。
返回:
如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
21 public int indexOf(String str,int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。返回的整数是满足下式的最小 k 值:
k >= Math.min(fromIndex, this.length())&& this.startsWith(str, k)
如果不存在这样的 k 值,则返回 -1。
参数:
str -要搜索的子字符串。
fromIndex -开始搜索的索引位置。
返回:
指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
22 public int lastIndexOf(String str)
返回指定子字符串在此字符串中最右边出现处的索引。将最右边的空字符串 "" 视为出现在索引值 this.length() 处。返回的索引是
this.startsWith(str, k)
为 true 的最大 k 值。
参数:
str -要搜索的子字符串。
返回:
如果字符串参数作为一个子字符串在此对象中出现一次或多次,则返回最后一个这种子字符串的第一个字符。如果它不作为一个子字符串出现,则返回 -1。
23 public int lastIndexOf(String str, int fromIndex)
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。返回的整数是满足下式的最大 k 值:
k <= Math.min(fromIndex,this.length())&& this.startsWith(str, k)
如果不存在这样的 k 值,则返回 -1。
参数:
str -要搜索的子字符串。
fromIndex -开始搜索的索引位置。
返回:
指定子字符串在此字符串中最后一次出现处的索引。
24 public int lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。对于 0 到 0xFFFF(包括 0 和 0xFFFF)范围内的 ch 的值,返回的索引(Unicode 代码单元)是
this.charAt(k) == ch
为 true 最大 k 值。对于其他 ch 值,返回值是
this.codePointAt(k) == ch
为 true 的最大 k 值。无论哪种情况,如果此字符串中没有这样的字符出现,则返回 -1。从最后一个字符开始反向搜索此 String。
参数:
ch -一个字符(Unicode 代码点)。
返回:
在此对象表示的字符序列中最后一次出现该字符的索引;如果未出现该字符,则返回 -1。
25 public int lastIndexOf(int ch,int fromIndex)
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。对于 0 到 0xFFFF(包括 0 和 0xFFFF)范围内的 ch值,返回的索引是
(this.charAt(k) == ch) && (k <=fromIndex)
为 true 的最大 k 值。对于 ch 的其他值,返回值是
(this.codePointAt(k) == ch) && (k<= fromIndex)
为 true 的最大 k 值。无论哪种情况,如果此字符串中 fromIndex 或之前的位置没有这样的字符出现,则返回 -1。
所有的索引都以 char 值指定(Unicode 代码单元)。
参数:
ch -一个字符(Unicode 代码点)。
fromIndex -开始搜索的索引。 fromIndex 的值没有限制。如果它大于等于此字符串的长度,则与它小于此字符串长度减 1 的效果相同:将搜索整个字符串。如果它为负,则与它为 -1 的效果相同:返回 -1。
返回:
在此对象表示的字符序列(小于等于 fromIndex)中最后一次出现该字符的索引;如果在该点之前未出现该字符,则返回 -1。
26 public int length()
返回此字符串的长度。长度等于字符串中 Unicode代码单元的数量。
指定者:
接口 CharSequence 中的 length
返回:
此对象表示的字符序列的长度。
27 public String replace(char oldChar,charnewChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,它所表示的字符序列除了所有的 oldChar 都被替换为 newChar 之外,与此 String 对象表示的字符序列相同。
示例:
"mesquitein your cellar".replace('e', 'o')
returns "mosquito in yourcollar"
"the war of baronets".replace('r','y')
returns "the way ofbayonets"
"sparring with a purple porpoise".replace('p','t')
returns "starring with a turtle tortoise"
"JonL".replace('q', 'x') returns"JonL" (no change)
参数:
oldChar -原字符。
newChar -新字符。
返回:
一个从此字符串派生的字符串,它将此字符串中的所有 oldChar 替代为 newChar。
28 public String replace(CharSequence target,CharSequence replacement)
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。该替换从字符串的开头朝末尾执行,例如,用 "b" 替换字符串 "aaa" 中的 "aa" 将生成 "ba" 而不是 "ab"。
参数:
target -要被替换的 char 值序列
replacement -char 值的替换序列
返回:
所得 String
抛出:
NullPointerException - 如果 target 或 replacement 为 null。
从以下版本开始:
1.5
29 public String[] split(String regex)
根据给定 正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:
Regex | 结果 |
: | { "boo", "and", "foo" } |
o | { "b", "", ":and:f" } |
参数:
regex -定界正则表达式
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
30 public String[] split(String regex,int limit)
根据匹配给定的 正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。
limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果:
Regex | Limit | 结果 |
: | 2 | { "boo", "and:foo" } |
: | 5 | { "boo", "and", "foo" } |
: | -2 | { "boo", "and", "foo" } |
o | 5 | { "b", "", ":and:f", "", "" } |
o | -2 | { "b", "", ":and:f", "", "" } |
o | 0 | { "b", "", ":and:f" } |
调用此方法的 str.split(regex, n) 形式与以下表达式产生的结果完全相同:
Pattern. compile ( regex ). split ( str , n )
参数:
regex -定界正则表达式
limit -结果阈值,如上所述
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
31 public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
示例:
"unhappy".substring(2) returns"happy"
"Harbison".substring(3) returns"bison"
"emptiness".substring(9) returns"" (an empty string)
参数:
beginIndex -起始索引(包括)。
返回:
指定的子字符串。
抛出:
IndexOutOfBoundsException - 如果 beginIndex 为负或大于此 String 对象的长度。
32 public String substring(int beginIndex,intendIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex- 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
示例:
"hamburger".substring(4, 8) returns"urge"
"smiles".substring(1, 5) returns"mile"
参数:
beginIndex -起始索引(包括)。
endIndex -结束索引(不包括)。
返回:
指定的子字符串。
抛出:
IndexOutOfBoundsException - 如果 beginIndex 为负,或 endIndex 大于此 String 对象的长度,或 beginIndex 大于endIndex。
33 public char[] toCharArray()
将此字符串转换为一个新的字符数组。
返回:
一个新分配的字符数组,它的长度是此字符串的长度,它的内容被初始化为包含此字符串表示的字符序列。
34 public String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。这等效于调用 toLowerCase(Locale.getDefault())。
注: 此方法与语言环境有关,如果用于应独立于语言环境解释的字符串,则可能生成不可预料的结果。 示例有编程语言标识符、协议键、HTML 标记。 例如,"TITLE".toLowerCase() 在 Turkish(土耳其语)语言环境中返回 "t?tle",其中“?”是 LATIN SMALL LETTER DOTLESS I 字符。 对于与语言环境有关的字符,要获得正确的结果,请使用 toLowerCase(Locale.ENGLISH)。
返回:
要转换为小写的 String。
另请参见:
35 public String toUpperCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。大小写映射关系基于 Character 类指定的 Unicode 标准版。由于大小写映射关系并不总是 1:1 的字符映射关系,因此所得 String 的长度可能不同于原 String。
下表中给出了几个与语言环境有关和 1:M 大小写映射关系的一些示例。
语言环境的代码 | 小写 | 大写 | 描述 |
tr (Turkish) | \u0069 | \u0130 | 小写字母 i -> 大写字母 I,上面有点 |
tr (Turkish) | \u0131 | \u0049 | 小写字母 i,无点 -> 大写字母 I |
(all) | \u00df | \u0053 \u0053 | 小写字母 sharp s -> 两个字母:SS |
(all) | Fahrvergnügen | FAHRVERGNÜN |
参数:
locale -使用此语言环境的大小写转换规则
返回:
要转换为大写的 String。
从以下版本开始:
1.1
另请参见:
toUpperCase(), toLowerCase(), toLowerCase(Locale)
36 public static String copyValueOf(char[] data,intoffset,int count)
返回指定数组中表示该字符序列的 String。
参数:
data -字符数组。
offset -子数组的初始偏移量。
count -子数组的长度。
返回:
一个 String,它包含字符数组的指定子数组的字符。
37 public static String copyValueOf(char[] data)
返回指定数组中表示该字符序列的 String。
参数:
data -字符数组。
返回:
一个 String,它包含字符数组的字符。
38 static String valueOf(X x);
(static String valueOf(char[]data, int offset, int count) 除外)
包括以下系列方法:
static String | valueOf(boolean b) |
static String | valueOf(char c) |
static String | valueOf(char[] data) |
static String | valueOf(char[] data, int offset, int count) |
static String | valueOf(double d) |
static String | valueOf(float f) |
static String | valueOf(int i) |
static String | valueOf(long l) |
static String |