首先說一下go中的字符串類型:
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了郾城免費(fèi)建站歡迎大家使用!
字符串就是一串固定長度的字符連接起來的字符序列。Go的字符串是由單個(gè)字節(jié)連接起來的。Go語言的字符串的字節(jié)使用UTF-8編碼標(biāo)識(shí)Unicode文本。
下面介紹字符串的三種遍歷方式,根據(jù)實(shí)際情況選擇即可。
該遍歷方式==缺點(diǎn)==:遍歷是按照字節(jié)遍歷,因此如果有中文等非英文字符,就會(huì)出現(xiàn)亂碼,比如要遍歷"abc北京"這個(gè)字符串,效果如下:
可見這不是我們想要的效果,根據(jù)utf-8中文編碼規(guī)則,我們要str[3]str[4]str[5]三個(gè)字節(jié)合起來組成“北”字及 str[6]str[7]str[8]合起來組成“京”字。由此引出下面第二種遍歷方法。
該方式是按照字符遍歷的,所以不會(huì)出現(xiàn)亂碼,如下:
運(yùn)行結(jié)果:
從圖中可以看到第二個(gè)漢子“京”的開始下標(biāo)是6,直接跳過了4和5,可見確實(shí)依照utf8編碼方式將三個(gè)字節(jié)組合成了一個(gè)漢字,str[3]-str[5]組合成“北”字,str[6]-str[8]組合成了“京”字。
由于下標(biāo)的不確定性,所以引出了下面的遍歷方式。
1 可以先將字符串轉(zhuǎn)成 []rune 切片
2 再用常規(guī)方法進(jìn)行遍歷
運(yùn)行效果:
由此可見下標(biāo)是按1遞增的,沒有產(chǎn)生跳躍現(xiàn)象。
for index,val := range a {
if val == '好' {
fmt.println(index,x)
}
}
對(duì)string做range得到的val是int32類型,直接用單引號(hào)比較就行
首先,理解什么是回文字符串,簡單的一句話概括就是關(guān)于中心左右對(duì)稱的字符串。例如:ABCBA或者AACCAA是回文字符串;ABCCA或者AABBCC不是回文字符串。
判斷方法就是,依次看兩端的字符是否相等。例如:ABCBA,第一個(gè)字符與最后一個(gè)字符相等,第二個(gè)字符與倒數(shù)第二個(gè)字符相等,第三個(gè)字符是中心字符,無需判斷。如果是AACCAA就要判斷。所以上面的字符串是回文字符串。
以下是C語言實(shí)現(xiàn)判斷回文字符串的代碼。
#includestdio.h
#includestring.h
int?main(void)
{
char?s[30];
int?b=0;??//1表示不是回文字符串
puts("請(qǐng)輸入一個(gè)字符串:");
scanf("%s",s);
for(int?i=0;istrlen(s)/2;i++)
if(s[i]!=s[strlen(s)-i-1])
{
b++;
break;
}
if(b)
printf("這不是回文字符串。");
else
printf("這是回文字符串。");
return?0;
}
當(dāng)前名稱:go語言字符串回文 go字符串換行
網(wǎng)站鏈接:http://sd-ha.com/article0/dojseio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、企業(yè)建站、關(guān)鍵詞優(yōu)化、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)