場景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 語...