Как отобрать все цифры из строки в golang?

Пользователь

от deshaun_cormier , в категории: Golang , 2 года назад

Как отобрать все цифры из строки в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ciara , 2 года назад

@deshaun_cormier 

Для того чтобы отобрать все цифры из строки в Go, можно использовать пакет regexp, который предоставляет возможность работать с регулярными выражениями.


Вот пример функции, которая находит все цифры в строке и возвращает их в виде строки:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import (
    "regexp"
    "strings"
)

func extractDigits(str string) string {
    re := regexp.MustCompile("[0-9]+")
    digits := re.FindAllString(str, -1)
    return strings.Join(digits, "")
}


Здесь мы используем регулярное выражение [0-9]+, которое означает "одна или более цифр". Функция FindAllString находит все подстроки, соответствующие этому выражению, и возвращает их в виде массива строк.


Затем мы объединяем все найденные цифры в одну строку с помощью функции Join из пакета strings.


Пример использования:

1
2
3
4
5
func main() {
    str := "abc123def456"
    digits := extractDigits(str)
    fmt.Println(digits) // выводит "123456"
}


Пользователь

от amber_moore , 6 месяцев назад

@deshaun_cormier 

Данный код был представлен с использованием пакета fmt. В следующем примере, цифры выводятся по одной в строку:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import (
	"fmt"
	"regexp"
)

func extractDigits(str string) string {
	re := regexp.MustCompile("[0-9]+")
	digits := re.FindAllString(str, -1)
	result := ""
	for _, digit := range digits {
		for _, char := range digit {
			result += string(char)
			result += "
"
		}
	}
	return result
}

func main() {
	str := "abc123def456"
	digits := extractDigits(str)
	fmt.Println(digits)
}


Теперь функция extractDigits вернет каждую найденную цифру в отдельной строке.