Maison >développement back-end >Golang >Comment extraire des nombres d'une chaîne en langage Go
Comment extraire des nombres d'une chaîne en langage Go
En langage Go, nous avons souvent besoin d'extraire la partie numérique d'une chaîne. Par exemple, nous pourrions avoir besoin d'extraire la partie numérique d'une chaîne contenant un numéro de téléphone ou d'extraire le numéro de prix d'une chaîne contenant des informations sur les prix. Cet article présentera plusieurs méthodes courantes pour atteindre cet objectif.
Méthode 1 : Utiliser des expressions régulières
Le langage Go fournit une bibliothèque d'expressions régulières intégrée regexp
, que nous pouvons utiliser pour extraire la partie numérique de la chaîne. Voici un exemple de code : regexp
,我们可以使用它来提取字符串中的数字部分。下面是一个示例代码:
package main import ( "fmt" "regexp" ) func main() { str := "ABC1234DEF5678GHI" re := regexp.MustCompile("[0-9]+") nums := re.FindAllString(str, -1) fmt.Println(nums) }
运行以上代码,输出结果为:[1234 5678]
。
在上面的代码中,我们使用了正则表达式[0-9]+
来匹配字符串中的数字部分。函数FindAllString
返回所有匹配的字符串。第二个参数-1
表示返回所有匹配,而不是只返回第一个匹配。最后,我们打印出了提取出的数字部分。
方法二:使用strconv
包
Go语言的strconv
包提供了一系列用于转换字符串和各种数字类型的函数。我们可以使用这些函数来提取字符串中的数字。
以下是一个示例代码:
package main import ( "fmt" "strconv" ) func main() { str := "ABC1234DEF5678GHI" nums := make([]int, 0) num := "" for _, char := range str { if char >= '0' && char <= '9' { num += string(char) } else if num != "" { n, _ := strconv.Atoi(num) nums = append(nums, n) num = "" } } fmt.Println(nums) }
运行以上代码,输出结果为:[1234 5678]
。
在上面的代码中,我们遍历了字符串中的每个字符,并使用Atoi
函数将提取出的数字字符串转换为整数。最后,我们打印出了提取出的数字部分。
方法三:手动解析字符串
如果字符串中的数字部分具有一定的规律,我们也可以手动解析字符串来提取数字。以下是一个示例代码:
package main import "fmt" func main() { str := "ABC1234DEF5678GHI" nums := make([]int, 0) num := 0 for _, char := range str { if char >= '0' && char <= '9' { num = num*10 + int(char-'0') } else if num != 0 { nums = append(nums, num) num = 0 } } fmt.Println(nums) }
运行以上代码,输出结果为:[1234 5678]
。
在上面的代码中,我们遍历了字符串中的每个字符,并使用当前字符的ASCII码减去字符'0'
rrreee
[1234 5678]
. Dans le code ci-dessus, nous utilisons l'expression régulière [0-9]+
pour faire correspondre la partie numérique de la chaîne. La fonction FindAllString
renvoie toutes les chaînes correspondantes. Le deuxième paramètre -1
signifie renvoyer toutes les correspondances au lieu de seulement la première correspondance. Enfin, nous imprimons la partie numérique extraite. 🎜🎜Méthode 2 : Utilisez le package strconv
🎜🎜Le package strconv
du langage Go fournit une série de fonctions pour convertir des chaînes et divers types numériques. Nous pouvons utiliser ces fonctions pour extraire des nombres d'une chaîne. 🎜🎜Ce qui suit est un exemple de code : 🎜rrreee🎜Exécutez le code ci-dessus, le résultat de sortie est : [1234 5678]
. 🎜🎜Dans le code ci-dessus, nous parcourons chaque caractère de la chaîne et utilisons la fonction Atoi
pour convertir la chaîne numérique extraite en un entier. Enfin, nous imprimons la partie numérique extraite. 🎜🎜Méthode 3 : analyser manuellement la chaîne🎜🎜Si la partie numérique de la chaîne comporte certains modèles, nous pouvons également analyser manuellement la chaîne pour extraire les nombres. Voici un exemple de code : 🎜rrreee🎜Exécutez le code ci-dessus, le résultat de sortie est : [1234 5678]
. 🎜🎜Dans le code ci-dessus, nous parcourons chaque caractère de la chaîne et utilisons le code ASCII du caractère actuel moins le code ASCII du caractère '0'
pour obtenir le numéro correspondant. En multipliant constamment le nombre actuel par 10 et en ajoutant le nouveau nombre, nous obtenons le nombre final. Enfin, nous imprimons la partie numérique extraite. 🎜🎜À travers l'introduction ci-dessus, nous pouvons voir que le langage Go propose diverses méthodes pour extraire la partie numérique de la chaîne. Nous pouvons choisir la méthode appropriée en fonction de besoins spécifiques. Quelle que soit la méthode choisie, nous pouvons extraire avec précision la partie numérique de la chaîne, ce qui facilite notre traitement ultérieur. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!