|
@@ -1,61 +1,61 @@
|
|
|
-# 18.1 字符串
|
|
|
|
|
-
|
|
|
|
|
-(1)如何修改字符串中的一个字符:
|
|
|
|
|
-
|
|
|
|
|
-```go
|
|
|
|
|
-str:="hello"
|
|
|
|
|
-c:=[]byte(s)
|
|
|
|
|
-c[0]='c'
|
|
|
|
|
-s2:= string(c) // s2 == "cello"
|
|
|
|
|
-```
|
|
|
|
|
-
|
|
|
|
|
-(2)如何获取字符串的子串:
|
|
|
|
|
-
|
|
|
|
|
-```go
|
|
|
|
|
-substr := str[n:m]
|
|
|
|
|
-```
|
|
|
|
|
-
|
|
|
|
|
-(3)如何使用for或者for-range遍历一个字符串:
|
|
|
|
|
-
|
|
|
|
|
-```go
|
|
|
|
|
-// gives only the bytes:
|
|
|
|
|
-for i:=0; i < len(str); i++ {
|
|
|
|
|
-… = str[i]
|
|
|
|
|
-}
|
|
|
|
|
-// gives the Unicode characters:
|
|
|
|
|
-for ix, ch := range str {
|
|
|
|
|
-…
|
|
|
|
|
-}
|
|
|
|
|
-```
|
|
|
|
|
-
|
|
|
|
|
-(4)如何获取一个字符串的字节数:`len(str)`
|
|
|
|
|
-
|
|
|
|
|
- 如何获取一个字符串的字符数:
|
|
|
|
|
-
|
|
|
|
|
- 最快速:`utf8.RuneCountInString(str)`
|
|
|
|
|
-
|
|
|
|
|
- `len([]int(str)) //TBD`
|
|
|
|
|
-
|
|
|
|
|
-(5)如何连接字符串:
|
|
|
|
|
-
|
|
|
|
|
- 最快速: `with a bytes.Buffer`(参考[章节7.2](07.2.md))
|
|
|
|
|
-
|
|
|
|
|
- `Strings.Join()`(参考[章节4.7](04.7.md))
|
|
|
|
|
-
|
|
|
|
|
- `+=`
|
|
|
|
|
-
|
|
|
|
|
- ```go
|
|
|
|
|
- str1 := "Hello "
|
|
|
|
|
- str2 := "World!"
|
|
|
|
|
- str1 += str2 //str1 == "Hello World!"
|
|
|
|
|
- ```
|
|
|
|
|
-
|
|
|
|
|
-(6)如何解析命令行参数:使用`os`或者`flag`包
|
|
|
|
|
-
|
|
|
|
|
- (参考[例12.4](examples/chapter_12/fileinput.go))
|
|
|
|
|
-
|
|
|
|
|
-## 链接
|
|
|
|
|
-
|
|
|
|
|
-- [目录](directory.md)
|
|
|
|
|
-- 上一节:[出于性能考虑的实用代码片段](18.0.md)
|
|
|
|
|
|
|
+# 18.1 字符串
|
|
|
|
|
+
|
|
|
|
|
+(1)如何修改字符串中的一个字符:
|
|
|
|
|
+
|
|
|
|
|
+```go
|
|
|
|
|
+str:="hello"
|
|
|
|
|
+c:=[]byte(s)
|
|
|
|
|
+c[0]='c'
|
|
|
|
|
+s2:= string(c) // s2 == "cello"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+(2)如何获取字符串的子串:
|
|
|
|
|
+
|
|
|
|
|
+```go
|
|
|
|
|
+substr := str[n:m]
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+(3)如何使用for或者for-range遍历一个字符串:
|
|
|
|
|
+
|
|
|
|
|
+```go
|
|
|
|
|
+// gives only the bytes:
|
|
|
|
|
+for i:=0; i < len(str); i++ {
|
|
|
|
|
+… = str[i]
|
|
|
|
|
+}
|
|
|
|
|
+// gives the Unicode characters:
|
|
|
|
|
+for ix, ch := range str {
|
|
|
|
|
+…
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+(4)如何获取一个字符串的字节数:`len(str)`
|
|
|
|
|
+
|
|
|
|
|
+ 如何获取一个字符串的字符数:
|
|
|
|
|
+
|
|
|
|
|
+ 最快速:`utf8.RuneCountInString(str)`
|
|
|
|
|
+
|
|
|
|
|
+ `len([]int(str)) //TBD`
|
|
|
|
|
+
|
|
|
|
|
+(5)如何连接字符串:
|
|
|
|
|
+
|
|
|
|
|
+ 最快速: `with a bytes.Buffer`(参考[章节7.2](07.2.md))
|
|
|
|
|
+
|
|
|
|
|
+ `Strings.Join()`(参考[章节4.7](04.7.md))
|
|
|
|
|
+
|
|
|
|
|
+ `+=`
|
|
|
|
|
+
|
|
|
|
|
+ ```go
|
|
|
|
|
+ str1 := "Hello "
|
|
|
|
|
+ str2 := "World!"
|
|
|
|
|
+ str1 += str2 //str1 == "Hello World!"
|
|
|
|
|
+ ```
|
|
|
|
|
+
|
|
|
|
|
+(6)如何解析命令行参数:使用`os`或者`flag`包
|
|
|
|
|
+
|
|
|
|
|
+ (参考[例12.4](examples/chapter_12/fileinput.go))
|
|
|
|
|
+
|
|
|
|
|
+## 链接
|
|
|
|
|
+
|
|
|
|
|
+- [目录](directory.md)
|
|
|
|
|
+- 上一节:[出于性能考虑的实用代码片段](18.0.md)
|
|
|
- 下一节:[数组和切片](18.2.md)
|
|
- 下一节:[数组和切片](18.2.md)
|