package main
import (
"fmt"
"strings"
)
func splitString(s string, delims string) []string {
// Build a delimiter set
delimSet := make(map[rune]bool)
for _, ch := range delims {
delimSet[ch] = true
}
// Normalize delimiters to spaces
var b strings.Builder
for _, ch := range s {
if delimSet[ch] {
b.WriteRune(' ')
} else {
b.WriteRune(ch)
}
}
// Split and filter empty tokens
parts := strings.Split(b.String(), " ")
tokens := make([]string, 0, len(parts))
for _, p := range parts {
if p != "" {
tokens = append(tokens, p)
}
}
return tokens
}
func main() {
s := "-c, c++.. c#:: -java! ,php...python: go!"
delims := " ,.:\\-!"
tokens := splitString(s, delims)
for _, t := range tokens {
fmt.Println(t)
}
}
/*
run:
c
c++
c#
java
php
python
go
*/