Muhammadkhonofficial
@Muhammadkhonofficial
Начинающий разработчик.

Как спарсить строку и изменить определённые символы?

Здравствуйте! Стоит такой вопрос:
Как можно спарсить строку и заменить определённые символы. Например:
Дано: +999 99 999 99 99 или +999 (99)-999-99-99
Нужно чтобы было: +999999999999.
Я новичок, поэтому можно объяснить полегче.
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
WinPooh32
@WinPooh32
Stack Overflow answer searching expert
Без регулярных выражений:
https://play.golang.org/p/SIqQunrMQHI
import (
	"strings"
)

func normalize(s string) string {
	var sb strings.Builder

	for _, r := range s {
		switch {
		case '0' <= r && r <= '9':
		case r == '+':
		default:
			continue
		}
		sb.WriteRune(r)
	}

	return sb.String()
}


С регeлярками:
https://play.golang.org/p/GYzsCTaEa9W
import (
	"regexp"
	"strings"
)
var re = regexp.MustCompile(`(?i)[\d\+]+`)

func normalize(s string) string {
	var sb strings.Builder
	subs := re.FindAllStringSubmatch(s, -1)
	
	for _, sub := range subs {
		sb.WriteString(sub[0])
	}
	
	return sb.String()
}


Или вариант с заменой сиволов:
var re = regexp.MustCompile(`(?m)[^+\d]`)
var str = `+999 (99)-999 9999`
fmt.Println(re.ReplaceAllString(str, ""))


Версия без регулярок более экономна по ресурсам процессора и памяти, но при изменении паттерна потребует изменения и кода функции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@ghostiam
На Go писатель, серверов пинатель.
strings.ReplaceAll("+999 99 999 99 99", " ", "")

но если замен несколько, то лучше:
NewReplacer
strings.NewReplacer(" ", "", "(", "", ")", "").Replace("+999 99 999 99 99")
Ответ написан
Заменить пробелы на "пустоту".
https://golang.org/pkg/strings/#ReplaceAll
strings.ReplaceAll("+999 99 999 99 99", " ", "")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы