【JAVA】字符串操作 —字符串賦值、輸出、合併、比較、查找、替換

一、前言

前面,我們整體學習了有關文件操作方面的知識,實現了檢測、新建、修改文件並寫入或者複製移動的操作。本次學習的是有關字符串方面的操作,爲方便大家學習,可以參照API閱讀此類的各個方法知識。

API鏈接如下:https://pan.baidu.com/s/1_DMTYTstbDtfdjutBE3h8Q 提取碼:elgp

字符串廣泛應用 在Java 編程中,在 Java 中字符串屬於對象,Java 提供了 String 類來創建和操作字符串。

二、任務學習

任務要求:

  • 完成一個java application應用程序,完成字符串的各種操作。
  • 操作包括字符串的初始化賦值輸出
  • 操作包括兩個字符串相加合成爲一個新字符串。
  • 操作包括兩個字符串比較其是否相同。
  • 操作包括已知一個字符串,查找某一子字符串是否被包含在此字符串之中,如果包含,包含了多少次
  • 操作包括已知一個字符串及其包含的某一子字符串,把此子字符串替換爲其他的新的指定字符串。

1)分析學習:

1.1 字符串的初始化賦值和輸出
  1. String類又稱作不可變字符序列。

  2. String位於java.lang包中,Java程序默認導入java.lang包下的所有類。

  3. Java字符串就是Unicode字符序列,例如字符串“Java”就是4個Unicode字符’J’、’a’、’v’、’a’組成的。

  4. Java沒有內置的字符串類型,而是在標準Java類庫中提供了一個預定義的類String,每個用雙引號括起來的字符串都是String類的一個實例。
    1

1.2 將兩個字符串合併爲新字符串

Java允許使用符號"+"把兩個字符串連接起來。
例:

String s1 = "Hello";
String s2 = "World! ";
String s = s1 + s2; //HelloWorld!

符號"+“把兩個字符串按給定的順序連接在一起,並且是完全按照給定的形式。
當”+"運算符兩側的操作數中只要有一個是字符串(String)類型,系統會自動將另一個操作數轉換爲字符串然後再進行連接
例:

int age = 18;
String str = "age is" + age;  //str賦值爲"age is 18"
//這種特性通常被用在輸出語句中:
System.out.println("age  is" + age);//age is 18
1.3 比較兩個字符串是否相同

==”代表比較雙方是否相同。如果是基本類型則表示值相等,如果是引用類型則表示地址相等即是同一個對象。

覆蓋類 Object 中的 equals

Object類中定義有:public boolean equals(Object obj)方法,提供定義“對象內容相等”的邏輯。比如,我們在公安系統中認爲id相同的人就是同一個人、學籍系統中認爲學號相同的人就是同一個人。

Object 的 equals 方法默認就是比較兩個對象的hashcode,是同一個對象的引用時返回 true 否則返回 false

JDK提供的一些類,如String、Date、包裝類等,重寫了Object的equals方法,調用這些類的equals方法, x.equals (y) ,當x和y所引用的對象是同一類對象且屬性內容相等時(並不一定是相同對象),返回 true 否則返回 false。

equalsequalsIgnoreCase區別在於:後者將此 String 與另一個 String 比較,不考慮大小寫。如果兩個字符串的長度相同,並且其中的相應字符都相等(忽略大小寫),則認爲這兩個字符串是相等的。
在忽略大小寫的情況下,如果下列至少一項爲 true,則認爲 c1 和 c2 這兩個字符相同。
7
8

1.4 查找字符串相互包含關係

在字符串中查詢某個char值時,此字符可以是單字母也可以是某個字符串,但是隻有包含指定的char值時纔會返回確定的查找值。
9
當我們需要查找子字符串出現的次數時,我們需要進行遍歷查找切割判斷

方法很多,我們這裏使用字符串截取的方案。使用indexOf來查找子字符串出現處的索引,用substring截取指導索引位置的字符串,即子串第一次出現的位置+長度=下一次的起始位置,如此循環查找,直至此字符串中沒有這樣的字符,則返回 -1退出循環語句。
10
11

1.5 替換字符串中指定字符

public String replace(char oldChar, char newChar)方法可以返回一個新字符串,這個新串是通過用newChar替換此字符串中出現的所有oldChar而生成的。
12

2)程序代碼:

爲實現整體效果,本人將以上所提的方法寫成總的一個程序,如下:

/* 項目名稱:Task_Du
 * 創建時間:2019年4月9日
 * 創建者:Administrator_wz
 * 創建地點:kmust
 * 功能:字符串的各項操作:賦值輸出、對比合成、查找替換
 */
 import java.util.Scanner;//導入java.util包中的Scanner類
 public class stringTest1{//創建類名
	public static void main(String[] args){//程序的主函數入口
		//字符串的初始化賦值和輸出
		Scanner s1 = new Scanner(System.in);//獲取鍵盤輸入並賦值給s1字符串
       	System.out.println("請給字符串a賦值:");//輸入提示信息
        String a = s1.nextLine();//定義字符串變量,並賦值爲用戶輸入的信息
		Scanner s2 = new Scanner(System.in);//獲取鍵盤輸入並賦值給s2字符串
		System.out.println("請給字符串b賦值:");//輸入提示信息
		String b = s2.nextLine();//定義字符串變量,並賦值爲用戶輸入的信息
		System.out.println("字符串a的內容爲:"+a);//輸出字符串a賦值後的內容
		System.out.println("字符串a的內容爲:"+b);//輸出字符串b賦值後的內容
		//將兩個字符串比較是否相同
		System.out.println("兩字符串的內容是否相同? "+a.equals(b));//輸出結果信息
		//System.out.println(a==b);        //比較兩字符串是否同一個對象
		//System.out.println(a.equals(b));  //比較兩個字符串內容是否相同
		//System.out.println(a.equalsIgnoreCase(b));//比較兩個字符串(忽略大小寫)
		//將兩個字符串相加合成爲一個新字符串
		String c = a + b;//合併兩個字符串
		System.out.println("字符串a與b合併之後的內容爲:\n"+c);//輸出合併字符串
		//查找某一子字符串是否被包含在此字符串之中,如果包含,包含了多少次
		Scanner s3 = new Scanner(System.in);//獲取鍵盤輸入並賦值給s3字符串
       	System.out.println("請輸入想要查找的字符串:");//輸入提示信息
        String d = s3.nextLine();//定義字符串變量,並賦值爲用戶輸入的信息
		boolean con =c.contains(d);//子字符串是否被包含在此字符串之中,包含輸出true,否則輸出false
		System.out.println("子字符串是否被包含在此字符串之中:"+con);//輸出結果信息
		System.out.println("包含次數爲:"+repetitions(c,d));//調用count,輸出包含次數
		//把此子字符串替換爲其他的新的指定字符串。
		Scanner s4 = new Scanner(System.in);//獲取鍵盤輸入並賦值給s4字符串
		System.out.println("請選擇是否替換字符(串):確定(1)/拒絕(2)");//提示選擇查詢方式
		int e = s4.nextInt();//定義一個int類型變量,選擇查詢方式
		switch(e){//查詢方式類
			case 1://查詢類型1,替換字符(串)後輸出
				Scanner s5 = new Scanner(System.in);//獲取鍵盤輸入並賦值給s5字符串
				System.out.println("請輸入想要替換的原字符:");//輸入提示信息
				String f = s5.nextLine();//定義字符串變量,並賦值爲用戶輸入的信息
				Scanner s6 = new Scanner(System.in);//獲取鍵盤輸入並賦值給s6字符串
				System.out.println("請輸入想要替換的原字符:");//輸入提示信息
				String g = s6.nextLine();//定義字符串變量,並賦值爲用戶輸入的信息
				String z=c.replace(f,g);//將f替換爲g
				System.out.println("替換前:"+c);//輸出替換前字符串信息
				System.out.println("替換後:"+z);//輸出替換後字符串信息
				break;//跳出
			case 2://查詢類型2,不替換
				System.out.println("最終的字符串內容爲:\n"+c);//輸出合併字符串
				break;//跳出
			default://輸入有誤項
				System.out.println("該字符(串)有誤");//輸出錯誤提示
				break;//跳出
			}
	} 	 
	public static int repetitions(String c, String d) {//創建repetitions統計出現次數
		int count = 0;//創建一個計數器,統計次數
		int fromIndex = 0;//創建計數器,設開始的地址
		while ((fromIndex = c.indexOf(d, fromIndex)) != -1) {// 循環到沒有輸出-1時就停止循環
			fromIndex = fromIndex + d.length();//子串第一次出現的位置+長度=下一次的起始位置
			count++;//次數加1
		}
		return count;//返回值
	}
 }

3)執行結果

分部拆裝效果見下:
2
3
4
String類常用的方法有(可到API中查看,部分前面也已講過,此處不贅述):

  1. String類的下述方法能創建並返回一個新的String對象: concat()、 replace()、substring()、 toLowerCase()、 toUpperCase()、trim()

  2. 提供查找功能的有關方法: endsWith()、 startsWith()、 indexOf()、lastIndexOf()

  3. 提供比較功能的方法: equals()、equalsIgnoreCase()、compareTo()。

  4. 其它方法: charAt() 、length()。


參考鏈接:
https://blog.csdn.net/hacker754/article/details/78686212
https://blog.csdn.net/u014259820/article/details/79654444
https://blog.csdn.net/qq276295783/article/details/84947981
https://blog.csdn.net/wufaliang003/article/details/74931375/
https://blog.csdn.net/weixin_42014622/article/details/82988533
https://blog.csdn.net/mingzhuo_126/article/details/83653422
https://blog.csdn.net/P90X_Liyuan/article/details/79573294
https://blog.csdn.net/jiaxianggege215/article/details/78206167


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章