Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 去替换字符串中的字符文字_String_Go - Fatal编程技术网

String 去替换字符串中的字符文字

String 去替换字符串中的字符文字,string,go,String,Go,在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++){ //pri

在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;
}

我们如何在golang做到这一点

这是我能做的最接近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)
}

但正如您所看到的,我们无法修改原始字符串,因此我们不是在原始字符串中“替换”,而是创建一个新字符串。

-我已经尝试过,但是
字符串。替换
需要一个字符串。不是字符在go lang中所有字符串都是常量,您不能只替换字符串中的单个字符,您必须分配一个新字符。@U学习者:所以使用字符串?为什么它是一个字符文字很重要?如果从一个字符开始很重要,那么您可以使用字符文本并用它生成一个字符串。
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)
}