基本字符操作(三)
本文通过一些实例,介绍了与字符串有关的相加、比较、包含和替换四种操作。读者若想查阅其他类型的操作,可参考以下博客。
两个字符集合间的对比:
https://blog.csdn.net/Atishoo_13/article/details/82667128
输入、ASCII码和汉字内码的回显
https://blog.csdn.net/Atishoo_13/article/details/82628698
数值转换、字节数组转换和格式化字符串:
https://blog.csdn.net/Atishoo_13/article/details/82807865
1.使预先设定的两个字符串相加合成为一个新字符串。
- String的长度可以是0到足够大
代码:
public class rw16 {
public static void main(String[] args) {
String str1 = "投我以桃,"; // 字符串中可以中英文混合使用
String str2 = "报之以李。"; // 对于字符串,即使只包含一个字符,也要用双引号
String plusStr = str1 + str2; // 字符串可以“相加”
System.out.println("str1:"+str1);
System.out.println("str2:"+str2);
System.out.println("str1+str2:"+plusStr);
}
}
编译结果如下图所示:
运行结果如下图所示:
2.操作包括两个字符串比较其是否相同。
- String类已经提供了这么一个方法,它的名字叫做equals,方法返回值是大小写一个boolean变量。String类的equals()方法会比较两个字符串中的每个字符,如果完全相同(英文字符是区分大小写的),则返回true,否则返回false。
- 两个引用之间也可以进行“==”运算,这个运算的意义是:当两个引用指向同一个对象或者同时为null的时候,运算结果为true;否则运算结果为false。可以用此计算符判断两个引用是否指向同一个对象。
public class rw17 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "ABCD";
String str2 = "abcd" ;
String str3 = "ABCD";
boolean equals12 = str1.equals(str2); // 调用equals()方法判断str1
// 是否和str2相等
boolean equals13 = str1.equals(str3); // 调用equals()方法判断str1
// 是否和str3相等
System.out.println("str1:" + str1+"\nstr2:"+str2+"\nstr3:"+str3);
System.out.println("字符串str1和字符串str2相等:" + equals12);
System.out.println("字符串str1和字符串str3相等:" + equals13);
}
}
编译结果如下图所示:
运行结果如下图所示:
3.操作包括已知一个字符串,查找某一子字符串是否被包含在此字符串之中,如果包含,包含了多少次。
- int length():这个方法的返回值是字符串的长度,也就是字符串中包含的字符的个数。
- char charAt(int index):这个方法返回指定位置的字符。它的参数就是想要得到的字符所在的位置,而返回值就是出于此位置的字符。注意第一个字符的位置是0。此方法与数组相似,称之为“索引”。
代码:
public class rw18 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "Some of us get dipped in flat, some in satin, some in gloss. But every once in a while you find someone who's iridescent, and when you do, nothing will ever compare.";
// 需要统计的字符串
char target = 'o'; // 需要统计的字符
int len = str.length(); // 得到字符串的长度
int count = 0; // 用来保存结果的int变量
for (int i = 0; i < len; i++) { // 遍历字符串中的每个字符
char ch = str.charAt(i); // 得到字符串中的第i个字符
if (ch == target) { // 如果这个字符是需要统计的
count++; // 计数器加1
}
}
System.out.println(str+"\n以上语段中包含" + count + "个\'"+ target + "\'个字符");
// 输出结果
}
}
编译结果如下图所示:
运行结果如下图所示:
4.操作包括已知一个字符串及其包含的某一子字符串,把此子字符串替换为其他的新的指定字符串。
判断要进行替换的字符是否存在,并需要遍历找到要替换的字符串的位置。
在替换字符串的位置上进行替换,获得替换后生成的新的字符串。
- 本程序定义一个replace()方法,对传入的字符串line进行部分替换。运用String对象的indexOf()方法,判断是否存在要替换的子串。若不存在子串,indexOf()方法返回-1。
- StringBuffer是字符串变量,它的对象是可以补充和修改的。StringBuffer对象的append()方法用来补充添加字符串。程序中运用while循环,当碰到替换前的字符串时,添加替换后的字符串,来达到替换的目的。
代码:
public class rw19 {
//JAVA程序的主入口方法
public static void main(String[] args) {
// TODO Auto-generated method stub
//
String s = "Say Hi Hi best Hi.";//原字符串
System.out.println("原字符串为:"+s);
String y="Hi";//原词
String h="good";//替换词
String s1=replace(s,y,h);//调用的方法进行替换
System.out.println("将"+y+"换为"+h+"后为:"+s1);//输出替换后的字符串
}
//
public static final String replace(String line, String oldString, String newString) {
// TODO Auto-generated method stub
if(!"".equals("")) { //判断字符串是否为空
return null;
}
int i=0;
if((i=line.indexOf(oldString,i))>=0) {
char[] line2=line.toCharArray();//字符串放入数组
char[] newString2=newString.toCharArray();//要替换的字符串
int oLength = oldString.length();//被替换的字符串
StringBuffer buf =new StringBuffer(line2.length);
buf.append(line2,0,i).append(newString2);
i += oLength;
int j=i;
while((i=line.indexOf(oldString,i))>0) {//while循环
buf.append(line2,j,i-j).append(newString2);
i +=oLength;
j=i;
}
buf.append(line2,j,line2.length-j);
return buf.toString();//返回替换后的字符串
}
return line;
}
}
编译结果如下图所示:
运行结果如下图所示: