2016-04-29 3 views
1
package main 

import (
    "fmt" 
    "strings" 
) 

func main() { 
    fmt.Println(strings.Replace("golang", "g", "1", -1)) 
} 

Как заменить все символы в строке "golang" (выше строки) с помощью *, что она должна выглядеть "******"?Как заменить все символы в строке в golang

+0

Не могли бы вы дать нам больше примеров того, как бы вы хотели себя вести себя? – icio

+0

ex: если я получаю строку типа «INHERITED», я хочу преобразовать ее в «*********» – vijay

+1

Вы имеете в виду 'strings.Replace (" golang "," golang "," ** **** ", -1)'? – Nadh

ответ

6

Простой способ сделать это без чего-то, как регулярное выражение:

https://play.golang.org/p/B3c9Ket9fp

package main 

import (
    "fmt" 
    "strings" 
) 

func main() { 
    fmt.Println(strings.Repeat("*", len("golang"))) 
} 

Что-то больше вдоль линий того, что вы, вероятно, изначально думал:

https://play.golang.org/p/nbNNFJApPp

package main 

import (
    "fmt" 
    "regexp" 
) 

func main() { 
    re := regexp.MustCompile(".") 
    fmt.Println(re.ReplaceAllString("golang", "*")) 
} 
+0

@photoiaonized ,,,,, thanks – vijay

+2

Кажется, ответ icza должен быть установлен как принятый, потому что он принимает во внимание, что строка может иметь многобайтовые руны –

11

Замена всех символов cters вы получите string с тем же номером персонажа, но все будут '*'. Поэтому просто постройте string с той же длиной символа, но все они будут '*'. strings.Repeat() может повторить string (конкатенация его):

ss := []string{"golang", "pi", "世界"} 
for _, s := range ss { 
    fmt.Println(s, strings.Repeat("*", utf8.RuneCountInString(s))) 
} 

Output (попробовать его на Go Playground):

golang ****** 
pi ** 
世界 ** 

Обратите внимание, что len(s) дает вам длину формы кодировки UTF-8, как это как Go хранит строки в памяти. Вы можете получить количество символов, используя utf8.RuneCountInString().

Например, следующая строка:

fmt.Println(len("世界"), utf8.RuneCountInString("世界")) // Prints 6 2 

печатает 6 2 как строки "世界" требует 6 байт для кодирования (в UTF-8), но он имеет только 2 символа.

+0

Хороший вызов многобайтовых символов. – photoionized

Смежные вопросы