Golang中从字符串获取负数的更好方法
Golang中从字符串获取负数的更好方法 我需要验证列表中是否存在负数。 我认为更好的方法是使用正则表达式。
func main() {
fmt.Println(add("-1\n,2,3"))
}
func add(numbers string) int {
re := regexp.MustCompile("[0-9]+")
sum := 0
for _, i := range re.FindAllString(numbers, -1) {
number, _ := strconv.Atoi(i)
sum += number
}
return sum
}
更多关于Golang中从字符串获取负数的更好方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
正则表达式很棘手。你的正则表达式会跳过负号,从而将每个负数都变成正数。
我建议用逗号和空格分割字符串,将每个字段转换为数字,然后测试该数字是否为负数。
func main() {
fmt.Println("hello world")
}
更多关于Golang中从字符串获取负数的更好方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go中处理包含负数的字符串时,使用正则表达式确实可以更精确地匹配数字(包括负数)。你当前的代码只能匹配正整数,无法正确识别负数。以下是改进后的版本:
package main
import (
"fmt"
"regexp"
"strconv"
)
func main() {
fmt.Println(add("-1\n,2,3,-4,5")) // 输出: 5
}
func add(numbers string) int {
// 匹配整数(包括负数)
re := regexp.MustCompile(`-?\d+`)
sum := 0
matches := re.FindAllString(numbers, -1)
for _, match := range matches {
number, err := strconv.Atoi(match)
if err != nil {
// 处理转换错误(虽然正则表达式已经确保是有效数字)
continue
}
sum += number
}
return sum
}
关键改进:
- 正则表达式
-?\d+中的-?表示可选的负号 - 使用反引号避免转义字符问题
- 添加了错误处理(虽然在这个场景中不是必需的)
如果你需要更复杂的数字格式匹配(如浮点数),可以使用:
re := regexp.MustCompile(`-?\d+(?:\.\d+)?`)
这个正则表达式可以匹配:
- 整数:
-1,42,-100 - 浮点数:
-3.14,2.5
对于纯整数场景,第一个版本就足够了。

