注意:在String中提供了一系列的操作而不改变的原串的方法。
判断是否包含指定的子串
判断字符串是否以指定字符结尾。经常用于筛选。
String中已经对equals做了重写。判断两个字符串是否相等,判断的是实际值。
String str = new String("abcdefghijkmn");
// 判断是否包含指定的子串
System.out.println(str.contains("dee"));
// 判断是否是指定的结尾---筛选
// .docx
System.out.println(str.endsWith("mn"));
// 判断是否为指定的开头
System.out.println(str.startsWith("a"));
// 对equals方法做过了重写,判断的是两个字符串的实际值是否一样
// 将两个字符串转化为字符数组,然后按位比较
System.out.println(str.equals(new String("ABCDEFGHIJKMN")));
// 适用于验证码,不区分大小写
System.out.println(str.equalsIgnoreCase(new String("ABCDEFGHIJKMN")));
忽略大小写判断是否相等。
将字符串转化为字节数组,如果不指定编码,会按照默认的系统平台码转化。
将字符串按照指定编码转化为字节数组。
之前说过一次编码,这里简单再说一下。
编码:按照某种规则将字符映射成字节,记录这种规则的形式,就是编码表。
ASCII,0-127,不完全的码表。
ISO-8859-1,西欧码表,一个字符一个字节。
gb2312,一个字符2个字节,包含了常见的基本简体汉字以及部分的繁体汉字,gbk
Unicode编码体系,utf-8,一个字符3个字节,常见语言的常见字符。
后续的所表默认兼容西欧码表:只要是英文,永远是一个字符对应一个字节。
String str = "中文";
// 表示将字符串转化为字节数组
// 如果没有指定编码,会默认采用系统平台码
byte[] bs = str.getBytes("utf-8");
System.out.println(bs.length);
System.out.println(new String(bs, 0, 3, "UTF-8"));
for (byte b : bs) {
System.out.println(b);
}
byte[] bs = {12,55,120,127,15};
// 将字节数组转化为字符串
// 表示从字节数组的下标为1的位置开始转化,转化2个字节
System.out.println(new String(bs,1,2));
截取字符串指定字节
输入一个字符串和一个数字,数字表示字节个数,然后按照指定的字节个数来截取字符串
中文english国 5 -> 中文e 6 -> 中文en 2 -> 中 3 -> 中 12-> 中文english?
方法一:
public static void printStr2(String str,int number){
//判断字符串是否为空
if(str==null){
return;
}
//判断字节个数是否是非负数
if(number<0){
return;
}
//先将所有的字符看成中文
int index = number/2;
//按照这个新的长度从原字符串身上截取
String newstr = str.substring(0,index);
while(newstr.getBytes().length!=number){
//如果少来就多添加一个字符
if(newstr.getBytes().length<number){
index++;
newstr = str.substring(0,index);
}else{
index--;
newstr = str.substring(0,index);
break;
}
}
System.out.println(str.substring(0,index));
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-53988-5.html
他自己说的
中国海军航空兵拥有飞豹