strings包
strconv包
golang中字串是一種基本型別(string),是乙個不可改變的utf-8字串行:
字串建立後,就不可改變;即不允許修改。
golang支援兩種型別的字串字面量:
字串宣告與初始化非常容易:
var s1 string
s2 :=
"hello"
多行字串使用反引號:
s :=
`hello
world!
line2`
fmt.
println
(s)
len()返回字串中的位元組數(非字元數目),索引操作s[i]返回字串s中第i個位元組的值(非ascii碼返回對應位元組的數值)。要獲取對應字元數(包含非ascii字元時)需要使用utf8.runecountinstring
s1 :=
"w字元"
fmt.
println
(len
(s1)
)// 7 (乙個漢字3個位元組)
fmt.
println
(utf8.
runecountinstring
(s1)
)// 3
golang中有多種字串拼接方法:
一般簡單拼接直接使用+,字串陣列/切片拼接為字串時用join,多條不相關字串拼接時用builder。
var buff bytes.buffer
buff.
writestring
("hello"
)buff.
writerune
('字'
)buff.
writestring
("符"
)fmt.
println
(buff.
string()
)// hello字元
var build strings.builder
build.
writestring
("hello"
)build.
writerune
('字'
)build.
writestring
("符"
)fmt.
println
(build.
string()
)// hello字元
go中可通過切片方式快速獲取子串s=src[low:high]
(指定索引範圍,『左含右不含』)。索引不能越界,否則會導致panic異常。
s1 :=
"abcdef"
fmt.
println
(s1[1:
4],s1[1:
],s1[:1
])// bcd bcdef a
有兩種遍歷方式:下標與range。下標方式遍歷時,輸出的是每個位元組;要輸出對應的unicode字元,需要通過range方式。
s1 :=
"w字元"
// 輸出7個數值(每個位元組對應數值)
for i:=
0; i<
len(s1)
; i++
// 輸出三個字元(分別:w 字 符)
for i, v:=
range s1
golang中字串內容預設不能修改,若要修改需要轉換為byte或rune型別修改後再轉回:
s1 :=
"w字元"
b1 :=
byte
(s1)
fmt.
println
(len
(b1)
)// 7
b1[0]=
'm'fmt.
println
(string
(b1)
)// m字元
r1 :=
rune
(s1)
fmt.
println
(len
(r1)
)// 3
r1[1]=
'世'fmt.
println
(string
(r1)
)//w世符
strings中包含了一些常用的字串操作函式,在涉及到字串修改時,返回新的串。
rot13 :=
func
(r rune
)rune
return r
}fmt.
println
(strings.
map(rot13,
"twas brillig and the slithy gopher..."
))
用於讀取字串,實現了io.reader、io.readerat、io.seeker、io.writerto、io.bytescanner、io.runescanner。
r := strings.
newreader
("abcdefghijklmn"
)fmt.
println
("total len:"
, r.
len())
// 14
var buf [
]byte
buf =
make([
]byte,5
)readlen, err := r.
read
(buf)
fmt.
println
("read len:"
, readlen)
// 5
if err !=
nilfmt.
println
(string
(buf)
)// abcde
fmt.
println
("remain len:"
, r.
len())
// 9 讀取到了5個 剩餘未讀是14-5
fmt.
println
("size:"
, r.
size()
)// 14 字串的長度
用於字串替換;placer中包含要替換字串的列表,且是執行緒安全的:
r := strings.
newreplacer
("<"
,"<"
,">"
,">"
)fmt.
println
(r.replace
("this ishtml!"))
// this ishtml!
strconv包用於字串與其它型別間的轉換:
在轉換時,會出現兩種型別的錯誤:
func parseint(s string, base int, bitsize int)(i int64, err error)
常用的atoi,是乙個簡易版,相當於parseint(s, 10, 0)
。
func formatfloat(f float64, fmt byte, prec, bitsize int) string
格式標記:
f :=
100.123456789
fmt.
println
(strconv.
formatfloat
(f,'b',5
,32))
// 13123382p-17
fmt.
println
(strconv.
formatfloat
(f,'e',5
,32))
// 1.00123e+02
fmt.
println
(strconv.
formatfloat
(f,'e',5
,32))
// 1.00123e+02
fmt.
println
(strconv.
formatfloat
(f,'f',5
,32))
// 100.12346
fmt.
println
(strconv.
formatfloat
(f,'g',5
,32))
// 100.12
fmt.
println
(strconv.
formatfloat
(f,'g',5
,32))
// 100.12
Python中字串常用操作和字串的切片
a abcdefg print a 1 3 切片冒號表示,冒號前面表示從第幾個座標開始,包含開始那個,後面表示從哪個座標結束 不包含結束座標 print a 1 後坐標不寫表示取到所有 print a 1 1 負數表示從後面第乙個座標開始字串在python中記憶體儲存乙個字母就代表乙個位元組 數字2...
字串的基本操作和模式匹配
include include define max size 100 define ok 1 define error 1 typedef int status 字串的結構體 typedef struct string 字串長度初始化為0 status strinit string s 生成乙個值...
對於js中的字串操作和陣列的操作
陣列的操作 var myarry 1 34 56 23 1.length myarray.length 2.prototype 原型 這個函式是獲取最大值的函式 function getmax array.prototype.max getmax myarray.max 就可以呼叫getmax這個方...