一个字符串替换问题

package main

import (
    "fmt"
    "strings"
    "unicode"
)

func replaceBlank(s string) (string, bool) {
    if len([]rune(s)) > 1000 {
        return s, false
    }
    for _, v := range s {
        if string(v) != " " && unicode.IsLetter(v) == false {
            return s, false
        }
    }
    return strings.Replace(s, " ", "%20", -1), true
}

func main() {
    s1 := "Hello World"
    fmt.Println(replaceBlank(s1))

    s2 := "Hello,World"
    fmt.Println(replaceBlank(s2))
}

源码中使用一个循环来判断字符是否是一个字母字符,不清楚这里有什么作用呢?

已邀请:

smallfish1 - 国内 Prometheus 首席布道师,是电子书《Promethues 实战》和 《Go 零基础入门》作者,另外对 SRE,自动化运维有深入理解。

赞同来自:

  1. 首先判断字符串是不是只包含字母(letter)和空格,如果是那么将空格替换为 "%20".
  2. 如果包含其他字符,不做处理,返回结果为 false.

fatcat22

赞同来自:

这里有一篇文章,记录了几道面试题。里面有和楼主给的一样的代码。根据描述,这应该是题目的要求吧。

请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由【大小写的英文字母组成】。给定一个string为原始的串,返回替换后的string。

tangmo

赞同来自:

应该是题目要求保证每个字符为空格或字母吧

要回复问题请先登录注册