иди замените символьный литерал в строке - PullRequest
1 голос
/ 13 апреля 2019

В golang, какой самый простой способ заменить символьный литерал в строке?

Вот код C, где мы заменяем пробел на '3':

#include <stdio.h>
#include <string.h>

int main(){

    char input[] = "Look ma no hands";
    printf("Input \"%s\" ", input);
    for (int i = 0; i < strlen(input); i++){
        //printf("input[%d] is %c\n", i, input[i]);
        if ( input[i] == ' ' ){
            input[i] = 3;
        }
    }

    printf(",converted to :%s\n", input);
    return 0;
}

Вывод:

$ ./a.out 
Input "Look ma no hands" ,converted to :Lookmanohands

Как мы можем сделать это в golang?

1 Ответ

2 голосов
/ 13 апреля 2019

Это самый близкий пример c, который я мог бы сделать:

func main() {
    input := "Look ma no hands"

    var b strings.Builder
    b.Grow(len(input))
    for _, p := range input[:] {
        if p == ' '{
            fmt.Fprintf(&b, "%c", '3')
        }else{
            fmt.Fprintf(&b, "%c", p)
        }
    }
    s := b.String()
    fmt.Println(s)
}

Но, как вы можете видеть, мы не можем изменить исходную строку, поэтому мы не "заменяем" исходную строку, а создаем новую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...