golang 如果字符串不满足32位有没有什么函数方法实现填充

hellsam · 2017-09-12 08:19:08 · 4657 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-09-12 08:19:08 的主题,其中的信息可能已经有所发展或是发生改变。

如:

str:="abcde"
if str.length<32{
    //实现str的填充满32位  可以根据自己定义的值填充满
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4657 次点击  
加入收藏 微博
12 回复  |  直到 2017-10-10 09:46:16
yufeng
yufeng · #1 · 8年之前

fmt包,自己去看

hellsam
hellsam · #2 · 8年之前

@yufeng 如果你知道的话 说下不可以吗

channel
channel · #3 · 8年之前

直接字符串连接不就结了吗?

ulysses
ulysses · #4 · 8年之前

没有想到太好的办法,一个low方式循环填充0

str := "2311"
count := len(str)
if count < 32 {
    for i := 0; i < (32-count); i++{
        str = str+"0"
    }
}
fmt.Println(str, count)
  • 还有貌似string没有length这个属性值吧,你那样写有问题吧
yufeng
yufeng · #5 · 8年之前

fmt.Sprintf("%032s", "1231") 都说fmt包了,还不自己去翻文档,真服了你了

sevenhe
sevenhe · #6 · 8年之前

sprintf这个是在左边填充吧,想要在右边填充还没有现成的方法。 来一个曲线救国吧,有个好处就是生成一个长度为32的字符串,然后随便你去截断,当然效率有待评估。

a := "12345"
ss := fmt.Sprintf("%032s", "")
a = fmt.Sprintf("%.32s", a+ss)
fmt.Println("size[", len(a), "]:", a)
mapana
mapana · #7 · 8年之前

还可以却多少个0补多少个0

temp   := "12345"
num    := fmt.Sprintf("%v", 32-len(temp))
fill   := fmt.Sprintf("%0"+num+"s", "")
result := fmt.Sprintf("%v%v", temp, fill)

fmt.Println("string size: ", len(result))
fmt.Println("string: ", result)
nezhang
nezhang · #8 · 8年之前

strings.repeat生成字符串再拼接一下

christian-chen
christian-chen · #9 · 8年之前
package main


 import (
     "fmt"
     "strings"
 )



 func StringFormat32(raw string) string {

     switch {
     case len(raw) == 32:
         return raw
     case len(raw) > 32:
         return fmt.Sprintf("%.32s",raw[:32])
     case len(raw) < 32:
         return fmt.Sprintf("%s%s",raw,strings.Repeat("_",32-len(raw)))
     default:
         /*should never meet here*/
         return raw
     }
 }



 func main() {
     fmt.Println(StringFormat32("01234567890123456789012345678901"))
     fmt.Println(StringFormat32("0123456789012345678901234567890123456"))
     fmt.Println(StringFormat32("01234567890123456789"))

 }
golwei
golwei · #10 · 8年之前
package main

func main() {

    s := []byte("hello")
    t1 := make([]byte, 32-len(s))
    for i := 0; i < len(t1); i++ {
        t1[i] = 97
    }
    t := append(s, t1...)
    println(string(t))

}

这也是一个方法?

waini1110
waini1110 · #11 · 8年之前
package Power

import (
    "fmt"
)

func Power() {
    str := "abc"
    a := fmt.Sprintf("%s%032s", str, "")[:32]
    fmt.Println(a)
}
waini1110
waini1110 · #12 · 8年之前
waini1110waini1110 #11 回复

```go package Power import ( "fmt" ) func Power() { str := "abc" a := fmt.Sprintf("%s%032s", str, "")[:32] fmt.Println(a) } ```

package Power

import (
    "fmt"
)

func Power() {
    str := "abc"
    a := fmt.Sprintf("%s%032s", str, "")[:32]
    fmt.Println(a)
}
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传