C 小白之路衝丫!

2021-10-10 02:51:03 字數 2211 閱讀 5468

場景1

在開發過程中,我們經常會遇到有讀資料庫,取出欄位中對應的字串,但是字串中會存在許多標點符號例如:

str=「year;month;day;」;
這是字段中插入了多組資料,使用特殊符號隔開。而我們在使用這些資料時又不得不將他們分開,單獨取出字串中的單個資料。

場景2

我們獲取到了上文str字串,可是在我們轉存時,其他客戶端又不接收以「;」作為分割符的上傳方式,需要轉換為」,「或者其他符號。

其實在c#中,開發人員已經考慮到了這一點並且幫助我們做好了這樣的方法:

split函式

這個函式中包含兩個引數,第乙個引數是佔位引數,即佔多少陣列位置,第二個引數是篩選符號。

demo.

split

(params

char

separator)

怎麼用呢?

比如我們拿到了乙個字串str

string str =

"years;months;days;time;"

string str2 =

"years;months;days;time"

//注意,str與str2的區別在於串內容結尾是否包含乙個」;「

現在要把其中的內容分割出來,分割為years months days time

首先定義乙個string型別的陣列

string

a = str.split[

newchar[1

]];string

b = str.split[

newchar[1

]];

那麼問題來了,取好後的a b相同嗎?

自然是不同的。a.length>b.length

因為a在取時以";「為節點分割,str的末尾存在」;"符號,因此末尾符號後多取了乙個空值。

/*這裡直接給出完整示例,大家可以執行一試*/

static

void

main

(string

args));

string

h = e.

split

(new

char[1

]);int c = a.length;

int i = h.length;

console.

writeline

(c);

console.

writeline

(i);

console.

writeline

(a[3])

;

console.

readkey()

;}catch

(exception ex)

}

這個場景就非常好解決啦,現在從上頭獲取了乙個字串

string str =

"year;month;day;"

;

然後我們要**給下家,下家要求:我們只接受這樣格式的!

string str_nextstep =

"year,month,day,"

;

哎呀這不誠心找不痛快嗎!但既然需求提了,咱就給解決吧。這個操作就非常簡單了!我們用到兩個很熟悉的方法:

contains()和 replace()

contains(a),用於判斷字元中是否包含(注意,不是匹配,是包含)a字元

replace(c,d),用於更改,將字元中的c更改為d

當然了我們做程式要嚴謹嘛,所以有必要使用contains來判斷一下上家給的字串包不包含特殊符號

string taskinfo =

"a;b;c;d;"

;//檢視是否包含該特殊符號

if(taskinfo.

contains

(";"))

//將提取出來帶;號的更改為,上傳

console.

writeline

(taskinfo)

;

執行一下看看,是不是變成了"a,b,c,d,"?

C 大白轉Python小白之路

此部落格的內容有 異常處理 c while cin str 在python中的形式 字元的值 匯入模組 python的編碼注釋 頭部 usr bin python keyboardinterrupt 使用者中斷執行 通常是輸入ctrl c 認識它是因為我想解決python中while cin s 的...

C語言之路 小白篇

目前我在學習c primer plus 第六版 中文版。正好有在學的。可以一起交流。儘管如此,我們還是要提醒讀者 宣告建立了名稱和型別,並為其分配記憶體位置。注意,宣告不是表示式語句。也就是說,如果刪除宣告後面的分號,剩下的部分不是乙個表示式,也沒有值 int port 不是表示式,沒有值 疑問點 ...

小白的C 之路 結構體

結構體與陣列不同的是結構體能包含不同型別的資料,像乙個綜合性的倉庫,更加靈活。include include include using namespace std struct student stu 100 intmain cout setw 10 學號 setw 10 姓名 setw 10 語...