字符串的相关基础操作

这篇博客详细介绍了Java中字符串的各种操作,包括StringBuffer转int型、String转int型、int转String、字符串比较、char数组转字符串、字符串相等判断、去除连续空格、字符串排序、查找子串位置、字符串分割、字符串截取、字符串反转以及如何处理特殊字符。还提到了StringBuffer在处理字符串时的注意事项,并提供了一个文字处理软件的操作示例。

                                         字符串的相关操作

 

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);
		
	}
}

语法之间的细节不要忘记

 

 

 

                                             总结

暂时是这些,将会不断更新更多我学到的字符串的基础操作,饭饭最美,我爱她!

如有错误,请斧正谢谢!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值