首先說一下go中的字符串類型:
成都創(chuàng)新互聯(lián)致力于成都網(wǎng)站建設、成都做網(wǎng)站,成都網(wǎng)站設計,集團網(wǎng)站建設等服務標準化,推過標準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務水平進行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇成都創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設服務!
字符串就是一串固定長度的字符連接起來的字符序列。Go的字符串是由單個字節(jié)連接起來的。Go語言的字符串的字節(jié)使用UTF-8編碼標識Unicode文本。
下面介紹字符串的三種遍歷方式,根據(jù)實際情況選擇即可。
該遍歷方式==缺點==:遍歷是按照字節(jié)遍歷,因此如果有中文等非英文字符,就會出現(xiàn)亂碼,比如要遍歷"abc北京"這個字符串,效果如下:
可見這不是我們想要的效果,根據(jù)utf-8中文編碼規(guī)則,我們要str[3]str[4]str[5]三個字節(jié)合起來組成“北”字及 str[6]str[7]str[8]合起來組成“京”字。由此引出下面第二種遍歷方法。
該方式是按照字符遍歷的,所以不會出現(xiàn)亂碼,如下:
運行結果:
從圖中可以看到第二個漢子“京”的開始下標是6,直接跳過了4和5,可見確實依照utf8編碼方式將三個字節(jié)組合成了一個漢字,str[3]-str[5]組合成“北”字,str[6]-str[8]組合成了“京”字。
由于下標的不確定性,所以引出了下面的遍歷方式。
1 可以先將字符串轉(zhuǎn)成 []rune 切片
2 再用常規(guī)方法進行遍歷
運行效果:
由此可見下標是按1遞增的,沒有產(chǎn)生跳躍現(xiàn)象。
方法:
先拆分,然后把拆分的字符串存到數(shù)據(jù)組中即可,代碼參考
public class STest
{
public static void main(String[] args)
{
String t="abc,edf,xyz";
String[] chrstr=t.split(",");
for(int i=0;ichrstr.length;i++)
{
System.out.println(chrstr[i]);
}
}
}
定義一個切片,然后讓切片去引用一個已經(jīng)創(chuàng)建好的數(shù)組?;菊Z法如下:
索引1:切片引用的起始元素位
索引2:切片只引用該元素位之前的元素
例程如下:
在該方法中,我們未指定容量cap,這里的值為5是系統(tǒng)定義的。
在方法一中,可以用arr數(shù)組名來操控數(shù)組中的元素,也可以通過slice切片來操控數(shù)組中的元素。切片是直接引用數(shù)組,數(shù)組是事先存在的,程序員是可見的。
通過 make 來創(chuàng)建切片,基本語法如下:
make函數(shù)第三個參數(shù)cap即容量是可選的,如果一定要自己注明的話,要注意保證cap≥len。
用該方法可以 指定切片的大小(len)和容量(cap)
例程如下:
由于未賦值系統(tǒng)默認將元素值置為0,即:
數(shù)值類型數(shù)組:????默認值為 0
字符串數(shù)組:? ? ? ?默認值為 ""
bool數(shù)組:? ? ? ? ? ?默認值為 false
在方法二中,通過make方式創(chuàng)建的切片對應的數(shù)組是由make底層維護,對外不可見,即只能通過slice去訪問各個元素。
定義一個切片,直接就指定具體數(shù)組,使用原理類似于make的方式。
例程如下: