package main import ( "log" "regexp" "strings" ) func sanitize_offer(angebote []Angebot) []Angebot { var W []Angebot for _, offer := range angebote { offer.Name = sanitize_name(offer.Name) W = append(W, offer) } return W } func sanitize_name(name string) string { if strings.Contains(name, "y.o.") { name = strings.Replace(name, "y.o.", "Jahre", 1) } if strings.Contains(name, "years old") { name = strings.Replace(name, "years old", "Jahre", 1) } if strings.Contains(name, "Years Old") { name = strings.Replace(name, "Years Old", "Jahre", 1) } r_liter, err := regexp.Compile(`[0-9]+([,.][0-9]+)?( )?[lL](iter)?`) if err != nil { log.Fatal(err) } for { name_liter := r_liter.FindString(name) if name_liter == "" { break } name = strings.Replace(name, name_liter, "", -1) name = strings.TrimSpace(name) } if strings.Contains(name, "Liter") { name = strings.Replace(name, "Liter", "", -1) } name = strings.TrimSpace(name) if strings.Contains(name, "liter") { name = strings.Replace(name, "liter", "", -1) } name = strings.TrimSpace(name) r_procent, err := regexp.Compile(`[0-9]+([,.][0-9]+)?\%`) if err != nil { log.Fatal(err) } for { name_procent := r_procent.FindString(name) if name_procent == "" { break } name = strings.Replace(name, name_procent, "", -1) name = strings.TrimSpace(name) } r_release, err := regexp.Compile(`Release$`) if err != nil { log.Fatal(err) } name_release := r_release.FindString(name) name = strings.Replace(name, name_release, "", 1) name = strings.TrimSpace(name) r_2x, err := regexp.Compile(`[0-9]+( )*[xX]( )`) if err != nil { log.Fatal(err) } for { name_2x := r_2x.FindString(name) if name_2x == "" { break } name = strings.Replace(name, name_2x, "", -1) name = strings.TrimSpace(name) } return name } func sanitize_base_price(price_noisy string) (price int, err error) { if strings.Contains(price_noisy, "Preis pro Liter") { price_noisy = strings.Replace(price_noisy, "Preis pro Liter", "", -1) } if strings.Contains(price_noisy, " pro 1 l") { price_noisy = strings.Replace(price_noisy, " pro 1 l", "", -1) } if strings.Contains(price_noisy, " pro 1 stück") { price_noisy = strings.Replace(price_noisy, " pro 1 stück", "", -1) } if strings.Contains(price_noisy, " pro 1 Stück") { price_noisy = strings.Replace(price_noisy, " pro 1 Stück", "", -1) } if strings.Contains(price_noisy, "Grundpreis:") { price_noisy = strings.Replace(price_noisy, "Grundpreis", "", -1) price_noisy = strings.TrimSpace(price_noisy) } if strings.Contains(price_noisy, "/Liter") { price_noisy = strings.Replace(price_noisy, "/Liter", "", -1) price_noisy = strings.TrimSpace(price_noisy) } return convert_price(price_noisy) }