字符串的相关操作
1.StringBuffer转int型的方法:
Integer.valueOf
String sts = "123";
int y = Integer.valueOf(strs.toString());
Integer.parseInt
String str = "123";
int x = Integer.parseInt(str.toString());
Stringbuffer如果想用String的语法必须转成String
2.String 转int型:
Integer.parselnt
String str = "123";
int a = Integer.parseInt(str);
3.int型转String
String.valueOf();
int a = 3;
String s=String.valueOf(a)
3.判断StringBuffer字符串与一个String字符串是否相等:

必须转换成String才能比较大小
char数组转成字符串

两个方法,但是toString方法会乱码
4.字符串之间如何判断是否相等:
equals()方法
5.字符串之间的连续空格问题:
用“+”号可以去掉连续的空格

现在对比一下没有去掉连续空格的效果:

6.字符串数组的排序:

字符串数组中的元素会按照首字母的字典序排序!
7.查找指定元素在字符串中的位置:

Indexof是第一次出现的位置 , lastindexof是最后一次出现的位置
8.字符串的分割:
split()方法
以 . \ |分割字符串,直接用. \ |无法分割,因为. \ | 是特殊字符,需要转义"\\." 、"\\ \"、“\\|”

多个字符分割同一字符串:
String string = "张三:李四,王五;赵六:孙七";
String[] authors = string.split(",|;|:");
for (int i = 0; i < authors.length; i++) {
System.out.println(authors[i]);
}
获取的结果如下:
张三
李四
王五
赵六
陈诚
在使用split();方法是要注意以下情况:
因为public string[] split(string regex) 这里的形参是 regular expression (正则表达式)。他对一些特殊的字符可能会出现你预想不到的结果,比如下面的字符:
(1) 用竖线 | 分隔字符串,你将得不到预期的结果
例如:String[] aa = "aaa|bbb|ccc".split("|"); 得到的结果是每个字符都进行了分割(可自行验证),并不是预期的效果。应该将代码部分改为String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果。
(2)用 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。
例如:String[] aa = "aaa*bbb*ccc".split("*"); 与上文同理应该改为String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果。
(3)还有如果想在串中使用"\\"字符,则也需要转义。应该这样使用:String[] aa = "aaa\\bbb\\bccc".split("\\\\");
(4) 还有就是点号".",与上文同理即为:String[] aa = "aaa.bbb.bccc".split("\\."); 。
String str = "3+2-1*5";
按+ - *分割因为这三个需要转义加\\
String [] ss = str.split("\\+|\\-|\\*");
若是普通的分割符直接
String [] ss = str.split(",|。|%“);
以下内容在我的其他博客用有说道并有详细例题讲解:
String str = "i love qifuff";
1.截取前i的字符(含头不含尾)
str = str.substring(0,1);
运行:i
str = str.substring(0,5);
运行:i lov
2.去掉前i的字符(含头不含尾)
str = str.substring(2);
运行:love qifuff
str = str.substring(5);
运行:qifuff
3.从右向左截取i个字符(含头不含尾)
str = str.substring(str.length()-2);
运行:ff
str = str.substring(str.length()-4);
运行:fuff
4.从右向左截掉i个字符(注意不包括第i个)
str = str.substring(0,str.length()-2);
运行:i love qifu
str = str.substring(0,str.length()-4);
运行:i love qi
5.反转字符串
方法1:
char []arr = str.toCharArray();//把字符串分割成单个字符的数组
String reverse = "";
for(int i = arr.length -1 ; i>=0 ; i--){//遍历数组,从后向前拼接
reverse +=array[i];
}
输出reverse:ffufiq evol i
方法2:
String str = sc.nextLine();
StringBuffer sb =new StringBuffer(str);
sb.reverse();
System.out.println(sb);
6.是否包含某字符串:
(1) String str = "i love 饭饭";
String strs = "饭饭";
if(str.contains(strs)) {
System.out.println("yes");
}else {
System.out.println("no");
}
运行:
(2) String str = "i love 饭饭";
String strs = "金洋";
if(str.contains(strs)) {
System.out.println("yes");
}else {
System.out.println("no");
}
(3)str.charAt()返回的是一个char类型的值
(4)str.tirm去掉首空格
Stringbuffer相关操作
例题:
你需要开发一款文字处理软件。最开始时输入一个字符串(不超过 100 个字符)作为初始文档。可以认为文档开头是第 0 个字符。需要支持以下操作:
-
1 str:后接插入,在文档后面插入字符串 str,并输出文档的字符串。 -
2 a b:截取文档部分,只保留文档中从第 a 个字符起 b 个字符,并输出文档的字符串。 -
3 a str:插入片段,在文档中第 a 个字符前面插入字符串 str,并输出文档的字符串。 -
4 str:查找子串,查找字符串 str 在文档中最先的位置并输出;如果找不到输出 -1。
为了简化问题,规定初始的文档和每次操作中的 str 都不含有空格或换行。最多会有 q(q≤100)q(q\le100)q(q≤100) 次操作。
输入格式
无
输出格式
无
输入输出样例
输入 #1
4
ILove
1 Luogu
2 5 5
3 3 guGugu
4 gu
输出 #1
ILoveLuogu
Luogu
LuoguGugugu
3
利用Stringbuffer解决问题有一些需要注意的点
import java.util.*;
public class Main3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
StringBuffer str2 = new StringBuffer("abc");
str2.append("2");//str2值改变
System.out.println(str2);
str2.substring(0,2);//此时str2的值没变
//str2 = new StringBuffer(str2.substring(0,2))//str2值改变
System.out.println(str2);//截取完str2的值没有改变
str2.insert(2, "d");//insert方法值改变
System.out.println(str2);
}
}
语法之间的细节不要忘记
总结
暂时是这些,将会不断更新更多我学到的字符串的基础操作,饭饭最美,我爱她!
如有错误,请斧正谢谢!
这篇博客详细介绍了Java中字符串的各种操作,包括StringBuffer转int型、String转int型、int转String、字符串比较、char数组转字符串、字符串相等判断、去除连续空格、字符串排序、查找子串位置、字符串分割、字符串截取、字符串反转以及如何处理特殊字符。还提到了StringBuffer在处理字符串时的注意事项,并提供了一个文字处理软件的操作示例。

4549

被折叠的 条评论
为什么被折叠?



