大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

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

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

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


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

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!


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩一级欧美一级毛片在 | 婷婷色综合久久 | 中文精品久久久久国产不卡 | 国产大战女模特在线视频 | 99热久久国产精品这里小说 | 国产精品视频专区 | 欧美性生活一级 | 日本爱爱片 | 欧美精品久久久亚洲 | 亚洲国产二区三区久久 | 欧美成人三级一区二区在线观看 | 草草影院国产第一页 | 国产精品最新 | 天天干夜夜操 | 国产在线公开视频 | 福利视频不卡 | 日日碰天天久久 | 四虎影视库 | 奇米影视四色7777 | 国产午夜精品不卡观看 | 97se狠狠狠狠狼亚洲综合网 | 国产成人亚洲欧美激情 | 久久综合久久自在自线精品自 | www.久久视频| 欧美成人伊人十综合色 | 大乳女做爰中文字幕 | 日韩成人影视 | 纯欧美一级毛片_免费 | 成人免费黄色片 | 九九久久国产精品大片 | 久久这里只有精品9 | 免费国产小视频在线观看 | 亚洲婷婷综合中文字幕第一页 | 一区二区三区四区亚洲 | 奇米777在线观看 | 日韩中文字幕在线看 | 免费在线观看亚洲 | 日韩 三级 | 99在线视频播放 | 久久综合给合久久97色美利坚 | 亚洲香蕉在线视频 |