黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 實例分析字符串的替換操作

實例分析字符串的替換操作

更新時間:2020-10-30 17:34:56 來源:動力節點 瀏覽1434次

字符串在存儲上類似字符數組,所以它每一位的單個元素都是可以提取的,同樣也是可以替換的。本文我們就來講一講字符串替換操作。


一般情況下,字符串替換分為以下三種情況:

1.字符替換,不常用

public String replace(char oldChar,char newChar)

2.全部替換

public String replaceAll(String regex,String s)

3.替換首個

public String replaceFirst(String regex,String s)


下面是一個涵蓋著三個替換方式的簡單例子:

package com.shxt.demo01;

public class StringDemo11 {

public static void main(String[] args) {

String str = "pangpang" ;

System.out.println(str.replace('n','X'));

System.out.println(str.replaceAll("an","*"));

System.out.println(str.replaceFirst("an","#"));

}

}

/**

運行結果

paXgpaXg

p*gp*g

p#gpang

*/

請你實現一個簡單的字符串替換函數。原串中需要替換的占位符為"%s",請按照參數列表的順序一一替換占位符。若參數列表的字符數大于占位符個數。則將剩下的參數字符添加到字符串的結尾。

給定一個字符串A,同時給定它的長度n及參數字符數組arg,請返回替換后的字符串。保證參數個數大于等于占位符個數。保證原串由大小寫英文字母組成,同時長度小于等于500。

測試樣例:"A%sC%sE",7,['B','D','F']

返回:"ABCDEF"


方法一:特殊函數替換法

解析:定義pos在原字符串A中查找“%s”子串,從而獲得“%s”的初始位置。然后替換“%s”,即定義一個下標i,并初始化為0,再定義一個字符串接收arg中替換的字符,然后遍歷原字符串A,當其元素為“%s”時,將arg中元素賦值給字符串s,再利用replace函數將原字符串中的“%s”替換成s中的元素。最后判斷參數列表的字符數是否大于占位符個數,如果是則將剩下的參數字符添加到字符串的末尾。由此得到替換后的字符串。

代碼:

//string::npos參數:pos 是一個常數,用來表示不存在的位置,類型一般是std::container_type::size_type 許多容器都提供這個東西。取值由實現決定,一般是-1,這樣做,就不會存在移植的問題了。

//find函數的返回值是整數,假如字符串存在包含關系,其返回值必定不等于npos,但如果字符串不存在包含關系,那么返回值就一定是npos。所以不難想到用if判斷語句來實現!

string formatString(string A, int n, vectorarg, int m)

{

int pos = A.find("%s");//在A中查找“%s"串

int i = 0;

string s;

while(pos != string::npos)

{

s = arg[i++];

A.replace(pos,2,s,0,1);//替換

pos = A.find("%s");

}

while(i < m)

{

A += arg[i++];

}

return A;

}


方法二:特殊函數刪除法

解析:先定義一個變量k,初始化為0,表示arg替換時的下標,然后遍歷原字符串A,替換“%s”,即判斷元素是否為‘%’并且下個元素為‘s’,如果是,arg中的某個元素替換當前元素,再用erase函數刪除后一個元素;最后判斷變量k是否不等于arg的長度,如果是,則將剩下的字符使用循環語句將其放入在字符串A中;如此可以得到替換后的字符串。

代碼:

//erase(pos,n); 刪除從pos開始的n個字符,比如erase(0,1)就是刪除第一個字符

//erase(position);刪除position處的一個字符(position是個string類型的迭代器)

//erase(first,last);刪除從first到last之間的字符(first和last都是迭代器)

string formatString(string A, int n, vectorarg, int m)

{

int k=0;

for(int i=0;i<n;i++)< p="">

{

if(A[i]=='%'&&A[i+1]=='s')

{

A[i]=arg[k];

k++;

A=A.erase(i+1,1);

}

}

if(k!=m)

{

for(int j=k;j<m;j++)< p="">

A=A+arg[j];

}

return A;

}


方法三:特殊函數復制法

解析:先遍歷原字符串A,將其‘%s’替換,即定義一個變量找到‘%’的位置,然后用substr復制函數將‘%’位置前的字符復制到新的字符res中,再將‘%s’替換的arg中的元素寫入新地字符串res中,此時用substr函數將A的字符串變為‘%s’之后的部分,如此反復替換完‘%s’;接著將新的字符串res與A相加得到字符串res;最后用遍歷的方式將arg中剩余的元素寫入res末尾,由此得到最終所求解的字符串。

代碼如下:

string formatString(string A, int n, vectorarg, int m)

{

string res;

int count = 0;

while(A.find('%') != -1)

{

int index = A.find('%');

string a = A.substr(0,index);

res = res + a;

res = res + arg[count++];

A = A.substr(index+2,A.size());

}

res = res + A;

for(int i = count; i < m; i++)

{

res = res + arg[i];

}

return res;

}


以上就是3種字符串替換方式和具體的操作過程,字符串主要用于編程,概念說明、函數解釋等,在Java編程中也扮演著一個不容忽視的角色。我們也不容小覷字符串的作用。觀看本站的Java基礎教程,打下Java編程的基礎,才能真正意義上學好Java!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 干干日日 | 国产精品日产三级在线观看 | 日韩在线视频免费 | 日本在线不卡一区二区 | 欧美一级日韩一级亚洲一级va | 精品视频免费播放 | 九九视频在线看精品 | 色在线影院 | 国产成人系列 | 俄罗斯午夜影院 | 国产精品香蕉成人网在线观看 | 亚洲色图综合图区 | 日本精品一区二区三区在线视频 | 日本视频免费高清一本18 | 日本高清中文字幕在线观穿线视频 | 国产日韩第一页 | 视频一区 日韩 | 午夜骚 | 天天躁天天爽 | a毛片在线看片免费 | 午夜看片网 | 日本三级韩国三级三级a级按摩 | 欧美人视频| 免费视频成人 | 天堂亚洲网| 亚洲七七久久综合桃花 | 亚洲国产一成人久久精品 | 伊人热| 午夜一级做a爰片久久毛片 午夜一级免费视频 | 男女做www免费高清视频 | 看中国国产一级毛片真人视频 | 久热这里只精品99re8久 | 久久免费网| 一级特级毛片 | 国产精品国产 | 日本aⅴ在线不卡免费观看 日本aaa大片 | 99爱在线视频 | 亚洲国产综合精品中文字幕 | 久久精品蜜芽亚洲国产a | 欧美福利视频网 | 怡春院日本一区二区久久 |