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

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

от kari , в категории: Общие вопросы , год назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

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

от maiya_cummings , год назад

@kari 

В Golang мы можем использовать функцию unicode.IsDigit(), чтобы проверить, является ли символ цифрой. Мы можем пройтись по строке и отобрать все символы-цифры.


Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
	"fmt"
	"unicode"
)

func main() {
	str := "abc123def456"

	digits := []rune{}

	for _, char := range str {
		if unicode.IsDigit(char) {
			digits = append(digits, char)
		}
	}

	fmt.Println(string(digits)) // 123456
}


Здесь мы инициализируем пустой срез рун (т.е. символов Unicode) с именем digits, который будет содержать все цифры из строки. Затем мы проходим по каждому символу строки с помощью цикла range. Если символ является цифрой, мы добавляем его в срез digits с помощью функции append().


Наконец, мы выводим значения среза digits, преобразовывая его в строку с помощью функции string(). В результате получаем строку, содержащую все цифры из исходной строки.

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

от leonel , год назад

@kari 

Вот пример кода на Go, который отбирает все цифры из строки:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "abc123def456"
	digits := ""

	for _, char := range str {
		if '0' <= char && char <= '9' {
			digits += string(char)
		}
	}

	fmt.Println(digits) // 123456
}


Здесь мы инициализируем пустую строку с именем digits, которая будет содержать все цифры из строки. Затем мы проходим по каждому символу строки с помощью цикла range. Если символ является цифрой (т.е. его код в таблице ASCII находится в диапазоне от '0' до '9'), мы преобразуем его в строку и добавляем к переменной digits с помощью оператора +=. В результате получаем строку, содержащую все цифры из исходной строки.