字符串的一些用法

一.Java字符串類基本概念

在JAVA語言中,字符串數據實際上由String類所實現的。Java字符串類分為兩類:一類是在程序中不會被改變長度的不變字符串;二類是在程序中會被改變長度的可變字符串。Java環境為了存儲和維護這兩類字符串提供了 String和StringBuffer兩個類。
?一、創建字符串
例: Stringstr=new("This is a String");

或者 Stringstr="This is a String";

?二、得到字符串對象的有關信息
1.通過調用length()方法得到String的長度.
例:

String str="Thisis a String";
int len =str.length();

2.StringBuffer類的capacity()方法與String類的 length()的方法類似,但是她測試是分配給StringBuffer的內存空間的大小,而不是當前被使用了的內存空間。
3.如果想確定字符串中指定字符或子字符串在給定字符串的位置,可以用 indexOf()和lastIndexOf()方法。

String str="Thisis a String";
Int index1 =str.indexOf("i");?? //index=2
Intindex2=str.indexOf(‘i‘,index+1);?? //index2=5
Intindex3=str.lastIndexOf("I");?? //index3=15
Intindex4=str.indexOf("String");? //index4=10


三、String對象的比較和操作
1.String對象的比較
String類的equals()方法用來確定兩個字符串是否相等。

String str="Thisis a String";
Boolean result=str.equals("This is another String");
//result=false


2.String對象的訪問
A、方法charAt()用以得到指定位置的字符。

String str="Thisis a String";
char chr=str.charAt(3); //chr="i"


B、方法getChars()用以得到字符串的一部分字符串

public voidgetChars(int srcBegin,intsrcEnd,char[]dst,intdstBegin)
String str="Thisis a String";
Char chr =new char[10];
Str.getChars(5,12,chr,0);? //chr="isa St"


C、subString()是提取字符串的另一種方法,它可以指定從何處開始提取字符串以及何處結束。
3.操作字符串
A、replace()方法可以將字符串中的一個字符替換為另一個字符。

String str="Thisis a String";
String str1=str.replace(‘T‘,‘t‘); //str1="thisis a String"


B、concat()方法可以把兩個字符串合并為一個字符串。

String str="Thisis a String";
String str1=str.concat("Test"); //str1="Thisis a String Test"


C、toUpperCase()和toLowerCase()方法分別實現字符串大小寫的轉換。

String str="THISIS A STRING";
String str1=str.toLowerCase(); //str1="thisis a string";


D、trim()方法可以將字符串中開頭和結尾處的空格去掉.

String str="Thisis a String?? ";
String str1=str.trim();?? //str1="This is a String"


E、String類提供靜態方法valueOf(),它可以將任何類型的數據對象轉換為一個字符串。如

System.out.println(String,ValueOf(math,PI));


四、修改可變字符串
StringBuffer類為可變字符串的修改提供了3種方法,在字符串中間插入和改變某個位置所在的字符。
1.在字符串后面追加:用append()方法將各種對象加入到字符串中。
2.在字符串中間插入:用insert()方法。例

StringBuffer str=new StringBuffer("Thisis a String");
Str.insert(9,"test");
System.out.println(str.toString());


這段代碼輸出為:Thisis a test String
3.改變某個位置所在的字符,用setCharAt()方法。

StringBuffer sb =new StringBuffer("aaaaaa");

sb.setCharAt(2, “b”); // 結果aabaaa

?


二.字符串分割

1.利用字符串類的split方法進行分割

??? /** *//**利用字符串的split方法進行分割
???? * @param str 待分割的字符串
???? * @param sdelimiter 分割符
???? * @return
???? */
??? public String[] splitString(String str,String sdelimiter)...{
??????? String[] array=str.split(sdelimiter);
??????? return array;
??? }

2.利用StringTokenizer來進行字符串分割

??? /** *//**利用StringTokenizer來進行字符串分割
???? * @param str? 待分割的字符串
???? * @param sdelimiter? 分割符
???? * @return
???? */
??? public String[] useStringTokenizer(String str,String sdelimiter)...{
??????? StringTokenizer token=new StringTokenizer(str,sdelimiter);
??????? String[] array=new String[token.countTokens()];
??????? int i=0;
??????? while(token.hasMoreTokens())...{
??????????? array[i]=token.nextToken();
??????????? i++;
??????? }
??????? return array;
??? }

三.字符串數組排序

/** *//**對字符串數組進行排序
???? * @param str 原始字符串數組
???? * @param flag flag=0:順序排序? flag=1:倒序排序
???? * @return 排序后的字符串數組
???? */
??? public String[] sort(String[] str,int flag)...{
??????? if(str==null||str.length==0)
??????????? throw new IllegalArgumentException();
??????? String temp=str[0];
??????? //順序排列 ,即從小到大
??????? if(flag==0)...{
??????????? for(int i=0;i<str.length-1;i++)...{
??????????????? for(int j=i+1;j<str.length;j++)...{
??????????????????? if(str[i].compareTo(str[j])>0)...{
??????????????????????? temp=str[i];
??????????????????????? str[i]=str[j];
??????????????????????? str[j]=temp;
??????????????????? }
??????????????? }
??????????? }
??????? }
??????? else if(flag==1)...{//倒序排列
??????????? for(int i=0;i<str.length-1;i++)...{
??????????????? for(int j=i+1;j<str.length;j++)...{
??????????????????? if(str[i].compareTo(str[j])<0)...{
??????????????????????? temp=str[i];
??????????????????????? str[i]=str[j];
??????????????????????? str[j]=temp;
??????????????????? }
??????????????? }
??????????? }
??????? }
??????? return str;
??? }

四.使用Hashtable對字符串進行碰撞

利用hashtable對字符串進行過濾,兩個字符數組之間的比較,對字符串數組進行過濾

1.在一些字符串數組中,常會有重復的記錄,比如手機號碼,我們可以通過Hashtable來對其進行過濾

public String[] checkArray(String[] str)...{
??????? Hashtable<String, String> hash=new Hashtable<String, String>();

??????? for(int i=0;i<str.length;i++)...{
??????????? if(!hash.containsKey(str[i]))
??????????????? hash.put(str[i], str[i]);
??????? }

??????? Enumeration enumeration=hash.keys();
??????? String[] str_new=new String[hash.size()];
??????? int i=0;

??????? while(enumeration.hasMoreElements())...{
??????????? str_new[i]=enumeration.nextElement().toString();
??????????? i++;
??????? }
??????? return str_new;
??? }


示例:
??????? String[]mobile={"13811071500","13811071500","13811071501","13811071503","13811071501"};
??????? mobile=checkArray(mobile);
??????? for(int i=0;i<mobile.length;i++)
?????????? System.out.println(mobile[i]);
?????? 輸出結果為:
??????? 13811071503
??????? 13811071501
??????? 13811071500
2.A,B均為字符串數組,找出在A中存在,而在B中不存在的字符串
??? public String[] compareArray(String[] A,String[] B){
??????? Hashtable<String, String> hash=newHashtable<String, String>();
??????? Hashtable<String, String>hash_new=new Hashtable<String, String>();

??????? for(int i=0;i<B.length;i++)
??????????? hash.put(B[i], B[i]);

??????? for(int i=0;i<A.length;i++){
?????????? if(!hash.containsKey(A[i]))
?????????????? hash_new.put(A[i], A[i]);
??????? }

??????? String[] C=new String[hash_new.size()];
??????? int i=0;
??????? Enumeration enumeration=hash_new.keys();

??????? while(enumeration.hasMoreElements()){
?????????? C[i]=enumeration.nextElement().toString();
??????????? i++;
??????? }
??????? return C;
??? }
示例:
??????? String[] mobile1={"13811071500","13811071501","13811071502","13811071503","13811071504"};
??????? String[]mobile2={"13811071500","13811071505","13811071502","13811071506","13811071504"};
??????? String[]mobile3=compareArray(mobile1,mobile2);
??????? for(int i=0;i<mobile3.length;i++)
?????????? System.out.println(mobile[i]);
輸出結果:
??? 13811071503
??? 13811071501
存在的問題:
每次都是倒序,可以再對程序稍加改動,變成正序。

3.將一個字符串數組中某一個特定的字符串過濾掉

/** *//**檢驗一個字符串數組,若包含某一特定的字符串,則將該字符串從數組中刪
除,返回剩余的字符串數組
???? * @param str_array? 字符串數組
???? * @param str_remove 待刪除的字符串
???? * @return 過濾后的字符串
???? */
??? public String[] removeStrFromArray(String[] str_array,String
str_remove)...{
??????? Hashtable<String, String> hash=new Hashtable<String, String>();
??????? for(int i=0;i<str_array.length;i++)...{
??????????? if(!str_array[i].equals(str_remove))
??????????????? hash.put(str_array[i], str_array[i]);
??????? }
??????? //生成一個新的數組
??????? String[] str_new=new String[hash.size()];
??????? int i=0;
??????? Enumeration enumeration=hash.keys();
??????? while(enumeration.hasMoreElements())...{
??????????? str_new[i]=enumeration.nextElement().toString();
??????????? i++;
??????? }
??????? return str_new;
??? }

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450359.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450359.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450359.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

獲取BGR顏色的HSV值

import cv2import numpy as npgreen np.uint8([[[152, 245, 255]]]) # 輸入待轉換顏色的BGR值hsv_green cv2.cvtColor(green, cv2.COLOR_BGR2HSV)print(hsv_green)轉載于:https://www.cnblogs.com/LicwStack/p/10129505.html

HTTP 協議是無狀態協議,怎么理解

HTTP 是一個屬于應用層的面向對象的協議&#xff0c;HTTP 協議一共有五大特點&#xff1a;1、支持客戶/服務器模式&#xff1b;2、簡單快速&#xff1b;3、靈活&#xff1b;4、無連接&#xff1b;5、無狀態。 無連接 無連接的含義是限制每次連接只處理一個請求。服務器處理完客…

加入初創企業需要想清楚的幾個問題

摘要&#xff1a;加入一家初創企業是一段充滿冒險的旅程。沿途不會都是美景&#xff0c;更別忘了最初的夢想。 去初創公司面試&#xff0c;你一般會糾結于被問到什么問題。但更重要的是問自己&#xff1a;你下定決心在接下來的5年中“從頭再來”嗎&#xff1f;你能接受這份薪資…

類和對象的區別

類和對象的區別1&#xff0c;類是一個抽象的概念&#xff0c;它不存在于現實中的時間/空間里&#xff0c;類只是為所有的對象定義了抽象的屬性與行為。就好像“Person&#xff08;人&#xff09;”這個類&#xff0c;它雖然可以包含很多個體&#xff0c;但它本身不存在于現實世…

IIS服務器SSL證書安裝

在證書控制臺下載IIS版本證書&#xff0c;下載到本地的是一個壓縮文件&#xff0c;解壓后里面包含.pfx文件是證書文件&#xff0c;pfx_password.txt是證書文件的密碼。 友情提示&#xff1a; 每次下載都會產生新密碼&#xff0c;該密碼僅匹配本次下載的證書。如果需要更新證書文…

attempting to use incompatible return type 提示 解決

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、問題&#xff1a;方法返回類型上有紅線&#xff0c;提示信息&#xff1a;... attempting to use incompatible return type 要返回…

地圖市場三足鼎立:諾基亞官方確認與亞馬遜合作

摘要&#xff1a;諾基亞確認為亞馬遜新推出的平板提供地圖服務&#xff0c;至此地圖市場“三家分晉”的格局已趨明朗。 路透社之前曾報道稱亞馬遜在新版Kindle中將使用諾基亞提供的地圖服務。但直到今日&#xff0c;這則消息才得到雙方的確認。諾基亞方面確認將為亞馬遜提供地圖…

關于明晚即將發布的新款 iPad Pro,最大的亮點也許不是 Face ID

北京時間 10 月 30 日晚間 10 點&#xff0c;蘋果將會在美國紐約的布魯克林音樂學院舉行新品發布會。考慮到此前蘋果已經在 9 月的發布會上宣布了 Apple Watch Series 4 和 iPhone XS/Max、iPhone XR 等新品&#xff0c;因此蘋果此次的紐約發布會&#xff0c;大家的目光更多地投…

重載

編程中重載的定義:函數名相同,函數的參數列表不同(包括參數個數和參數類型)&#xff0c;至于返回類型可同可不同。重載是可使函數、運算符等處理不同類型數據或接受不同個數的參數的一種方法&#xff0c;關于重載一詞在詞義上有兩種不同的說法&#xff1a;多態&#xff1a;重載…

11. Container With Most Water

題意 給定n個非負整數\(a_1,a_2,...,a_n\),其中每個數表示坐標點\((i,a_i)\),i是數組下標,\(a_i\)是對應高度.尋找兩條線,使得兩條線構成的長方形面積最大,盛水最多. Example: Input: [1,8,6,2,5,4,8,3,7] Output: 49 解 暴力破解 對每種情況進行循環,計算對應的面積,同時保存最…

如何培養編程所需要的邏輯思維?

很少有人能單單通過所謂“邏輯思維”從復雜問題快速找到抽象的&#xff0c;如果有這樣的人&#xff0c;他的經驗&#xff0c;工具&#xff0c;方法和直覺通常起到比邏輯思維更重要的作用。寫代碼需要邏輯思維&#xff0c;但解決復雜問題更需要理解分析&#xff0c;寫代碼只是解…

jws 方式表格導出,excel文件導出,rest風格接口實現

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、思路&#xff1a;從數據庫表中查出list &#xff0c;封裝到 HSSFWorkook 中&#xff0c;再由HSSFWorkook 寫出到 File 中, 用 res…

先思再行 閉著眼睛編程

摘要&#xff1a;解決問題最重要的習慣不是一直盯著屏幕和編寫修改代碼&#xff0c;某些時候&#xff0c;阻止你成功的東西恰恰會是過于努力。這時候你需要暫停一下&#xff0c;平緩你的思緒&#xff0c;換一種方法或許能帶給你不一樣的效果。你會花多少時間思考如何編寫代碼&a…

javaScript復習

ES6字符串方法&#xff1a; //console.log(String.prototype);var str "abcdefabc";//console.log(str.includes("a"));//結果true//console.log(str.includes("abf"));//結果false//console.log(str.startsWith("d"));//false//cons…

STS的安裝教程-鵬鵬

STS全稱Spring Tools Suite。 簡介&#xff1a;Spring Tools Suite (STS)其實就是一個被包裝過的Eclipse&#xff0c;主要用于快速的開發Spring項目&#xff0c;我們不用再去編輯繁瑣的xml配置文件&#xff0c;而是由工具自動生成。STS有兩種安裝方式&#xff0c;一種是直接在E…

final的用法

final 根據程序上下文環境&#xff0c;Java關鍵字final有“這是無法改變的”或者“終態的”含義&#xff0c;它可以修飾非抽象類、非抽象類成員方法和變量。你可能出于兩種理解而需要阻止改變&#xff1a;設計或效率。 final類不能被繼承&#xff0c;沒有子類&#xff0c;f…

愛恨交織的編程語言 是什么吸引了你

摘要&#xff1a;每門編程語言都有自身獨特的地方&#xff0c;那么為什么有些語言會一直存活在我們周圍&#xff0c;而有些語言卻逐漸被人淡忘&#xff0c;是什么吸引你&#xff1f; 每名程序員至少知道兩門以上的編程語言&#xff0c;有些甚至不是所謂的編程語言&#xff08;比…

Unable to parse the date: 2017-12-30 日期格式轉化失敗

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題&#xff0c; 日期格式轉化失敗。 原因&#xff1a;參數是2017-09-23 這種格式&#xff0c;代碼卻是寫的轉為&#xff1a; &qu…

linux邏輯卷管理

2019獨角獸企業重金招聘Python工程師標準>>> 摘要&#xff1a; Linux用戶安裝Linux操作系統時遇到的一個最常見的難以決定的問題就是如何正確地給評估各分區大小&#xff0c;以分配合適的硬盤空間。而遇到出現某個分區空間耗盡時&#xff0c;解決的方法通常是使用符…

[LeedCode]921. 使括號有效的最少添加

題目描述&#xff1a; 給定一個由 ( 和 ) 括號組成的字符串 S&#xff0c;我們需要添加最少的括號&#xff08; ( 或是 )&#xff0c;可以在任何位置&#xff09;&#xff0c;以使得到的括號字符串有效。從形式上講&#xff0c;只有滿足下面幾點之一&#xff0c;括號字符串才是…