java String与unicode
java String与unicodejava.nio.charset.Charsetpublic static Charset defaultCharset()此方法的作用:返回java虚拟机的默认字符集,默认的字符集取决于操作系统的字符集。java.lang.String public byte[] getBytes()此方法的作用:编码字符串到一个字节流序列,此时采用
java String与unicode
java.nio.charset.Charset
public static Charset defaultCharset()
此方法的作用:返回java虚拟机的默认字符集,默认的字符集取决于操作系统的字符集。
java.lang.String
public byte[] getBytes()
此方法的作用:编码字符串到一个字节流序列,此时采用的编码是平台默认的编码,如果想获得指定编码的字节序列,可用下面这个方法:
public byte[] getBytes(String charsetName)
按照指定编码返回此字符串的编码格式。
证据如下:
String str = "我";
System.out.println(Integer.toHexString(codePoint));
byte[] bs = str.getBytes();
System.out.println(Charset.defaultCharset());
for (int i=0; i<bs.length; i++) {
System.out.print(bs[i] + " ");
}
System.out.println();
6211
GBK
-50 -46
当指定编码为UTF-8时:
6211
GBK
-26 -120 -111
当指定为UTF-16时:
-2 -1 98 17
注意此处输出了四个字节,是因为前面两个字节是用来表示字符的编码序列.
public int codePointAt(int index)
返回指定索引处的字符(Unicode 代码点)。该索引引用 char 值(Unicode 代码单元),其范围从 0 到length()- 1。
注意字符串在内存中是以unicode代码点的方式存储的。
public String(byte[] bytes, String charsetName)
throws UnsupportedEncodingException
构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。新的 String 的长度是一个字符集函数,因此不能等于字节数组的长度。
public String[] split(String regex)
根据给定的正则表达式的匹配来拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两因此,结果数组中不包括结尾空字符串。
例如,字符串 "boo:and:foo" 产生带有下面这些表达式的结果:
Regex | 结果 |
: | { "boo", "and", "foo" } |
o | { "b", "", ":and:f" } |
试验证明:
String str = "boo:and:foo";
String[] tr = str.split(":");
for (String s : tr) {
System.out.println(s);
}
输出结果:
boo
and
foo
public String[] split(String regex,
int limit)
根据匹配给定的正则表达式来拆分此字符串
limit影响字符数组的长度;最大不能超过limit
试验证明:
String str = "boo:and:foo";
String[] tr = str.split(":", 2);
for (String s : tr) {
System.out.println(s);
}
输出结果:
boo
and:foo
即字符串数组的最大长度为2
经验分享:
1、分隔符为“.”(无输出),“|”(不能得到正确结果)转义字符时,“*”,“+”时出错抛出异常,都必须在前面加必须得加"//",如split(//|);
2、如果用"/"作为分隔,就得写成这样:String.split(""),因为在Java中是用"//"来表示"/"的,字符串得写成这样:String Str="a//b//c";
转义字符,必须得加"//";
3、如果在一个字符串中有多个分隔符,可以用"|"作为连字符,比如:String str="Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开;
试验证明:
String str="Java str//in.g-split#test";
String[] t = str.split(" |-|#||//.");
for (String temp : t) {
System.out.println(temp);
}
输出结果:
Java
str
in
g
split
test
public String replace(char oldChar,
char newChar)
返回一个新的字符串,它是通过用 newChar
替换此字符串中出现的所有 oldChar
而生成的。
如果 oldChar
在此 String
对象表示的字符序列中没有出现,则返回对此 String
对象的引用。否则,创建一个新的 String
对象,用来表示与此 String
对象表示的字符序列相等的字符序列,除了每个出现的 oldChar
都被一个 newChar
替换之外。
示例:
"mesquite in your cellar".replace('e', 'o')
returns "mosquito in your collar"
"the war of baronets".replace('r', 'y')
returns "the way of bayonets"
"sparring with a purple porpoise".replace('p', 't')
returns "starring with a turtle tortoise"
"JonL".replace('q', 'x') returns "JonL" (no change)
试验证明:
String str = "tst";
String str2 = str.replace('y', 'z');
System.out.println(str == str2);
输出结果:
true
当有字符被替换掉时:
String str = "tst";
String str2 = str.replace('t', 'z');
System.out.println(str == str2);
输出结果:
false
replaceAll
public String replaceAll(String regex,
String replacement)
使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。
试验证明:
String str = "tst";
String str2 = str.replaceAll("ts", "y");
System.out.println(str2);
输出结果:
yt
indexOf
public int indexOf(String str)
返回第一次出现的指定子字符串在此字符串中的索引。返回的整数是
试验证明:
String str = "tstdddwz";
System.out.println(str.indexOf("wz"));
输出结果
6
注意此时下标是从0开始的。
更多推荐
所有评论(0)