接上篇关于String,你必须知道的东西!,上次说了String的一些概念和注意事项,这篇就来整理下一些经常用操作.
1,字符串条件操作
字符串的比较在程序中是经常看见的,除了最经常的对内容比较,还有其他的一些比较方法
1.1比较字符串内容是否相等
String str = "hello";
System.out.println(str.equals("hello"));
输出:true
1.2比较字符串内容是否相等(忽略大小写)
String str = "hello";
System.out.println(str.equals("Hello"));
System.out.println(str.equalsIgnoreCase("Hello"));
输出:
false
true
1.3判断字符串是否等于给定的正则表达式
String str = "hello";
System.out.println(str.matches("\\w+"));
输出为:true
此处应该注意,matches(String regex),参数必须是正则表达式
1.4判断字符串是否以指定的前缀开始,或者以后缀结束
String str = "hello";
System.out.println(str.endsWith("o"));
System.out.println(str.endsWith("lo"));
System.out.println(str.endsWith("llo"));
System.out.println(str.endsWith("lla"));
结果为:
true
true
true
false
指定前缀开始:
String str="hello";
System.out.println(str.startsWith("h"));
System.out.println(str.startsWith("he"));
System.out.println(str.startsWith("hel"));
System.out.println(str.startsWith("hol"));
结果为:
true
true
true
false
在指定索引处是否以指定前缀开始String str="hello";
System.out.println(str.startsWith("l",0));
System.out.println(str.startsWith("l",1));
System.out.println(str.startsWith("l",2));
System.out.println(str.startsWith("llo",2));
System.out.println(str.startsWith("llo",3));
结果为:
false
false
true
true
false
1.5判断字符串长度,以及字符串是否为空
String str1 = "hello";
String str2 = "";
System.out.println(str1.length());
System.out.println(str2.length());
System.out.println(str1.isEmpty());
System.out.println(str2.isEmpty());
结果为:
5
0
false
true
需要注意的是,""和null代表的含义是完全不一样的.
String str=""在内存中是这样的:
String str=null在内存中是这样的
由于null根本没有对应的堆内存空间,所以如果调用lenth()和isEmpty()方法,会出现空指针错误:
Exception in thread "main" java.lang.NullPointerException
2,字符串切割(字符串数组),字符数组
2.1字符串切割成字符串数组形式
public class Test{
public static void main(String []args){
String str="hello everyone my name is simon";
String a[]=str.split(" ");
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
}
}
结果为:
hello
everyone
my
name
is
simon
需要注意的是,split(String regex)参数必须是正则表达式!
2.2字符串拆分成字符数组形式
String str="hello everyone my name is simon";
char a[]=str.toCharArray();
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
输出为:
h
e
l
l
o
e
v
e
r
y
o
n
e
m
y
n
a
m
e
i
s
s
i
m
o
n
3,字符串与子串
一丶String类
String 类本身由于其命名规范的要求肯定是一个类,但是却发现,此类在使用上较为特殊,而且发现在 String 类的操作中依然可以使用“+”或“+=”进行字符串的连接,还可以发现,各个数据类型的数据只要是碰到了 String 类的内容,则都统一向 String 进行转换,所以 String 类的使用及特点就非常的重要。
1,String的比较,涉及的常用函数为
equals(),equalsIgnoreCase()-------->比较String内容
compareTo(),compareToIgnoreCase()---------->比较String大小
regionMatches()-------->匹配子串
public class StringTest {
public static void main(String[] args) {
String a = "ABC";
String b = "abc";
String c = "abcdef";
// TODO Auto-generated method stub
System.out.println(a.equals(b));//字符串内容比较
System.out.println(a.equalsIgnoreCase(b));//字符串内容比较,忽略大小写
System.out.println(a.compareTo(b));//比较字符串大小
System.out.println(a.compareToIgnoreCase(b));//比较字符串大小,忽略大小写
/**
* 下述两个方法用来比较两个字符串中指定区域的子串。入口参数中,用toffset和ooffset分别指出当前字符串中的子串起始位置和要与之
* 比较的字符串中的子串起始地址;len 指出比较长度。前一种方法可区分大写字母和小写字母,如果在 boolean ignoreCase处写 true,表示
* 将不区分大小写,写false则表示将区分大小写。而后一个方法认为大小写字母有区别。由此可见,实际上前一个方法隐含了后一个方法的功能。
* 定义:
* regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len);
regionMatches( int toffset,String other,int ooffset,int len);
*/
System.out.println(c.regionMatches(0, a, 0, 3));//区分大小写
System.out.println(c.regionMatches(false,0, a, 0, 3));//同上
System.out.println(c.regionMatches(true,0,a, 0, 3));//不区分大小写
}
}
对应的输出应该是:
false
true-32
0
false
false
true
2,String的截取,常用函数为
public String subString(int begin)---->返回一个新的字符串从begin开始
public String subString(int begin,int end)---->返回的字符串是从begin开始长度为end-begin的串
注意:比如有一个字符串abcdef,那么a位置是0,b位置是1,依次类推,f是5,该字符串长度为6.
public class StringTest {
public static void main(String[] args) {
String a = "ABC";
String b = "abc";
String c = "abcdef";
System.out.println(a.substring(0));//结果ABC
System.out.println(a.substring(1));//结果BC
System.out.println(a.substring(2));//结果C
System.out.println(c.substring(0, 4));//结果abcd
System.out.println(c.substring(1, 4));//结果bcd
}
}
split()函数是一个常用函数,去掉特定字符串,其余字符串作为数组返回.
public class StringTest {
public static void main(String[] args) {
String c = "abkefksdfksfwekwww";
String []s1 = c.split("k");
for(int i=0;i<s1.length;i++)
System.out.println(s1[i]);
}
}
结果为:
ab
ef
sdf
sfwe
www