mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 06:19:44 +08:00
添加了FindFileDigits(filename string) []byte 函数 (#422)
如果想找到文件中所有数字串,需要用FindAll函数而不是Find
This commit is contained in:
@@ -21,7 +21,7 @@ func main() {
|
|||||||
|
|
||||||
输出:
|
输出:
|
||||||
|
|
||||||
0:ÿ 2:界
|
0:ÿ 2:界
|
||||||
|
|
||||||
我们知道,Unicode 字符会占用 2 个字节,有些甚至需要 3 个或者 4 个字节来进行表示。如果发现错误的 UTF8 字符,则该字符会被设置为 U+FFFD 并且索引向前移动一个字节。和字符串转换一样,您同样可以使用 `c := []int32(s)` 语法,这样切片中的每个 int 都会包含对应的 Unicode 代码,因为字符串中的每次字符都会对应一个整数。类似的,您也可以将字符串转换为元素类型为 rune 的切片:`r := []rune(s)`。
|
我们知道,Unicode 字符会占用 2 个字节,有些甚至需要 3 个或者 4 个字节来进行表示。如果发现错误的 UTF8 字符,则该字符会被设置为 U+FFFD 并且索引向前移动一个字节。和字符串转换一样,您同样可以使用 `c := []int32(s)` 语法,这样切片中的每个 int 都会包含对应的 Unicode 代码,因为字符串中的每次字符都会对应一个整数。类似的,您也可以将字符串转换为元素类型为 rune 的切片:`r := []rune(s)`。
|
||||||
|
|
||||||
@@ -163,6 +163,18 @@ func FindDigits(filename string) []byte {
|
|||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
事实上,上面这段代码只能找到第一个匹配正则表达式的数字串。要想找到所有的数字,可以尝试下面这段代码:
|
||||||
|
```go
|
||||||
|
func FindFileDigits(filename string) []byte {
|
||||||
|
fileBytes, _ := ioutil.ReadFile(filename)
|
||||||
|
b := digitRegexp.FindAll(fileBytes, len(fileBytes))
|
||||||
|
c := make([]byte, 0)
|
||||||
|
for _, bytes := range b {
|
||||||
|
c = append(c, bytes...)
|
||||||
|
}
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
**练习 7.12**
|
**练习 7.12**
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user