java string字符操作_[ Java学习基础 ] String字符串的基本操作

字符串的拼接

String字符串虽然是不可变的字符串,但也同样可以进行拼接,只是会产生一个新的对象。String字符串拼接的时候可以使用“+”运算符或String的concat(String str)方法。其中“+”运算符的优势是可以连接任何类型的数据拼接成为字符串,而concat方法只能拼接String类型的字符串。

示例如下:

1 String s1 = "Hello";2 //使用+运算符连接

3 String s2 = s1 + " ";4 String s3 = s2 + "World";5 System.out.println(s3);6

7 String s4 = "Hello";8 //使用+运算符连接,支持+=赋值运算符

9 s4 += " ";10 s4 += "World";11 System.out.println(s4);12

13 String s5 = "Hello";14 //使用concat方法连接

15 s5 = s5.concat(" ").concat("World");16 System.out.println(s5);17

18 int age = 18;19 String s6= "I'm " + age + "years old.";20 System.out.println(s6);21

22 char score = 'A';23 String s7= "His grade is" +score;24 System.out.println(s7);25

26 java.util.Date now = newjava.util.Date();27 //对象拼接自动调用toString()方法

28 String s8= "Date:" +now;29 System.out.println(s8);

输出结果:

Hello World

Hello World

Hello World

I'm 18 years old.

His grade is A

Date:Thu May25 16:25:40 CST 2017

上述代码第3、4行使用+运算符进行字符串的拼接,其中产生了三个对象。代码第9、10行是使用+=赋值运算符,本质上也是+运算符进行拼接。

代码第15行采用concat方法进行拼接,该方法的完整定义如下:

public String concat(String str)

它的参数和返回值都是String,因此代码第15行可以连续调用该方法进行多个字符串的拼接。

代码第19和第23行是使用+运算符,将字符串与其他类型数据进行的拼接。代码第28行是与对象可以进行拼接,Java中所有对象都有一个toString()方法,该方法可以将对象转换为字符串,拼接过程会调用该对象的toString()方法,将该对象转换为字符串后再进行拼接。代码第26行的java.util.Date类是Java SE提供的日期类。

字符串查找

从给定的字符串中查找字符或字符串是常见的操作。String类中提供了indexOf和lastIndexOf方法供使用,方法返回值是所查找的字符或字符串所在的位置,若未找到,则会返回-1。以下是其它常用的重载方法:

int indexOf(int ch):从前往后搜索字符ch,返回第一次找到字符ch所在处的索引。

int indexOf(int ch, int fromIndex):从指定的索引开始从前往后搜索字符ch,返回第一次找到字符ch所在处的索引。

int indexOf(String str):从前往后搜索字符串str,返回第一次找到字符串所在处的索引。

int indexOf(String str, int fromIndex):从指定的索引开始从前往后搜索字符串str,返回第一次找到字符串所在处的索引。

int lastIndexOf(int ch):从后往前搜索字符ch,返回第一次找到字符ch所在处的索引。

int lastIndexOf(int ch, int fromIndex):从指定的索引开始从后往前搜索字符ch,返回第一次找到字符ch所在处的索引。

int lastIndexOf(String str):从后往前搜索字符串str,返回第一次找到字符串所在处的索引。

int lastIndexOf(String str, int fromIndex):从指定的索引开始从后往前搜索字符串str,返回第一次找到字符串所在处的索引。

示例如下:

String sourceStr = "There is a string accessing example.";//获得字符串长度

int len =sourceStr.length();//获得索引位置16的字符

char ch = sourceStr.charAt(16);//查找字符和子字符串

int firstChar1 = sourceStr.indexOf('r');int lastChar1 = sourceStr.lastIndexOf('r');int firstStr1 = sourceStr.indexOf("ing");int lastStr1 = sourceStr.lastIndexOf("ing");int firstChar2 = sourceStr.indexOf('e', 15);int lastChar2 = sourceStr.lastIndexOf('e', 15);int firstStr2 = sourceStr.indexOf("ing", 5);int lastStr2 = sourceStr.lastIndexOf("ing", 5);

System.out.println("原始字符串:" +sourceStr);

System.out.println("字符串长度:" +len);

System.out.println("索引16的字符:" +ch);

System.out.println("从前往后搜索r字符,第一次找到它所在索引:" +firstChar1);

System.out.println("从后往前搜索r字符,第一次找到它所在索引:" +lastChar1);

System.out.println("从前往后搜索ing字符串,第一次找到它所在索引:" +firstStr1);

System.out.println("从后往前搜索ing字符串,第一次找到它所在索引:" +lastStr1);

System.out.println("从索引为15位置开始,从前往后搜索e字符,第一次找到它所在索引:" +firstChar2);

System.out.println("从索引为15位置开始,从后往前搜索e字符,第一次找到它所在索引:" +lastChar2);

System.out.println("从索引为5位置开始,从前往后搜索ing字符串,第一次找到它所在索引:" +firstStr2);

System.out.println("从索引为5位置开始,从后往前搜索ing字符串,第一次找到它所在索引:" + lastStr2);

输出结果:

原始字符串:There is a string accessing example.

字符串长度:36索引16的字符:g

从前往后搜索r字符,第一次找到它所在索引:3从后往前搜索r字符,第一次找到它所在索引:13从前往后搜索ing字符串,第一次找到它所在索引:14从后往前搜索ing字符串,第一次找到它所在索引:24从索引为15位置开始,从前往后搜索e字符,第一次找到它所在索引:21从索引为15位置开始,从后往前搜索e字符,第一次找到它所在索引:4从索引为5位置开始,从前往后搜索ing字符串,第一次找到它所在索引:14从索引为5位置开始,从后往前搜索ing字符串,第一次找到它所在索引:-1

soucreStr字符串索引如下:

c3bb580ef9e3ac3e7b13d630010a51f2.png

字符串比较

字符串也是常见的操作,包括比较相等、比较大小、比较前缀和后缀等。

比较相等

String提供的比较字符串相等的方法:

boolean equals(Object anObject):比较两个字符串中内容是否相等。

boolean equalsIgnoreCase(String anotherString):类似equals方法,只是忽略大小写。

比较大小

有时不仅需要知道是否相等,还要知道大小,String提供的比较大小的方法:

int compareTo(String anotherString):按字典顺序比较两个字符串。如果参数字符串等于此字符串,则返回值 0;如果此字符串小于字符串参数,则返回一个小于 0 的值;如果此字符串大于字符串参数,则返回一个大于 0 的值。

int compareToIgnoreCase(String str):类似compareTo,只是忽略大小写。

比较前缀和后缀

boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束。

boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始

示例如下:

1 String s1 = new String("Hello");2 String s2 = new String("Hello");3 //比较字符串是否是相同的引用

4 System.out.println("s1 == s2 : " + (s1 ==s2));5 //比较字符串内容是否相等

6 System.out.println("s1.equals(s2) : " +(s1.equals(s2)));7

8 String s3 = "HELlo";9 //忽略大小写比较字符串内容是否相等

10 System.out.println("s1.equalsIgnoreCase(s3) : " +(s1.equalsIgnoreCase(s3)));11

12 //比较大小

13 String s4 = "java";14 String s5 = "Swift";15 //比较字符串大小 s4 > s5

16 System.out.println("s4.compareTo(s5) : " +(s4.compareTo(s5)));17 //忽略大小写比较字符串大小 s4 < s5

18 System.out.println("s4.compareToIgnoreCase(s5) : " +(s4.compareToIgnoreCase(s5)));19

20 //判断文件夹中文件名

21 String[] docFolder = { "java.docx", " JavaBean.docx", "Objecitve-C.xlsx", "Swift.docx "};22 int wordDocCount = 0;23 //查找文件夹中Word文档个数

24 for(String doc : docFolder) {25 //去的前后空格

26 doc =doc.trim();27 //比较后缀是否有.docx字符串

28 if (doc.endsWith(".docx")) {29 wordDocCount++;30 }31 }32 System.out.println("文件夹中Word文档个数是: " +wordDocCount);33

34 int javaDocCount = 0;35 //查找文件夹中Java相关文档个数

36 for(String doc : docFolder) {37 //去的前后空格

38 doc =doc.trim();39 //全部字符转成小写

40 doc =doc.toLowerCase();41 //比较前缀是否有java字符串

42 if (doc.startsWith("java")) {43 javaDocCount++;44 }45 }46 System.out.println("文件夹中Java相关文档个数是:" + javaDocCount);

输出结果:

s1 == s2 : falses1.equals(s2) :trues1.equalsIgnoreCase(s3) :trues4.compareTo(s5) :23s4.compareToIgnoreCase(s5) :-9文件夹中Word文档个数是:3文件夹中Java相关文档个数是:2

上述代码第16行的compareTo方法按字典顺序比较两个字符串,s4.compareTo(s5)表达式返回结果大于0,说明s4大于s5,字符在字典中顺序事实上就它的Unicode编码,先比较两个字符串的第一个字符j和S,j的Unicode编码是106,S的Unicode编码是83,所以可以得出结论s4 > s5。

代码第18行是忽略大小写时,要么全部当成小写字母进行比较,要么当前成全部大写字母进行比较,无论哪种比较结果都是一样的s4 < s5。

代码第26行trim()方法可以去除字符串前后空白。代码第40行toLowerCase()方法可以将此字符串全部转化为小写字符串,类似的方法还有toLowerCase()方法,可将字符串全部转化为小写字符串。

字符串截取

Java中主要的两个常用字符串截取方法如下:

String substring(int beginIndex):从指定索引beginIndex开始截取一直到字符串结束的子字符串。

String substring(int beginIndex, int endIndex):从指定索引beginIndex开始截取直到索引endIndex - 1处的字符,注意包括索引为beginIndex处的字符,但不包括索引为endIndex处的字符。

示例如下:

1 String sourceStr = "There is a string accessing example.";2 //截取example.子字符串

3 String subStr1 = sourceStr.substring(28);4 //截取string子字符串

5 String subStr2 = sourceStr.substring(11, 17);6 System.out.printf("subStr1 = %s%n", subStr1);7 System.out.printf("subStr2 = %s%n",subStr2);8

9 //使用split方法分割字符串

10 System.out.println("-----使用split方法-----");11 String[] array = sourceStr.split(" ");12 for(String str : array) {13 System.out.println(str);14 }

输出结果:

subStr1 =example.

subStr2=string-----使用split方法-----There

is

a

string

accessing

example.

上述sourceStr字符串索引如下图所示。代码第3行是截取example.子字符串,由索引图可见e字符索引是28, 从索引28字符截取直到sourceStr结尾。代码第5行是截取string子字符串,由图可见,s字符索引是11,g字符索引是16,endIndex参数应该17。

另外,String还提供了字符串分割方法,见代码第11行split(" ")方法,参数是分割字符串,返回值String[]。

b290613dd8351328a0779249a1e2e3d1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的: 练习使用Java基本数据类型。使用JavaString操作字符串和子串。 实验内容: 1.写一个程序提示用户键入某一货币数量(以分为单位),该程序应计算出如何用最少量的1元,50分,10分和1分硬币得到该数目。如195分最少可以用一个1元硬币,1个50分硬币,4个10分硬币和5个1分硬币组成。 注意不要用数组存放不同硬币的值。 2.写一个程序可以对两个字符串进行测试,得知第一个字符串是否包含在第二个字符串中。如字符串”PEN”包含在字符串“INDEPENDENT”中。 可以利用字符串类方法 boolean regionMatches(int toffset, String other, int ooffset, int len) toffset 指从被调用方法的字符串的第几个字符开始测试,如果是0,表明从字符串的首字符开始。other是指使用的另一个字符串。ooffset指从另一个字符串的第几个字符开始。len指要比较几个字符。该方法返回boolean值。 在本题中,ooffset为0,因为我们要测试整个短字符串;len是短字符串的长度;所以应该用 big.regionMatches(index, small, 0, small.length()) 如果big指“independent",small指"pen",则index=2时为假,index=4时为真 (b)改进程序,当第一个字符串包含在第二个字符串中时,显示第一个字符串在第二个字符串中的起始位置。 (c)改进程序,即使当用户输入顺序错误时(第一个是长字符串,第二个是短字符串),能自动在长字符串中搜寻短字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值