package main
import (
"fmt"
"unicode"
)
func main(){
for i:=0; i<=127 ;i++ {
fmt.Printf("%d, %c\n", i,i)
}
h2:=HangNeiRong{
2,
"bbbbbb",
}
h3:=HangNeiRong{
3,
"c",
}
var HangList []HangNeiRong
HangList=append(HangList, h2)
HangList=append(HangList, h3)
HuaYiGeFangKuai(9,90,HangList...)
fmt.Printf("%v\n",HangList)
HuaYiGeFangKuai(9,90,[]HangNeiRong{{2,"汪伟"},{3,"笑一笑"},{5,"a笑一笑b"}}...)
}
type HangNeiRong struct {
hangNum int
hang string
}
func HuaYiGeFangKuai(gao,chang int,hangList... HangNeiRong ) {
//List转Map
var m map[int]string
m=make(map[int]string)
for _,v := range hangList{
m[v.hangNum]=v.hang
}
//第一行
fmt.Printf("%c", 1)
for i := 0; i < chang-2; i++ {
fmt.Printf("%c", 6)
}
fmt.Printf("%c\n", 2)
//中间行
for h := 1; h < gao-1; h++ {
v,ok:=m[h+1]
if ok {
Hang(chang,v)
}else {
Hang(chang, "")
}
}
//最后一行
fmt.Printf("%c", 3)
for i := 0; i < chang-2; i++ {
fmt.Printf("%c", 6)
}
fmt.Printf("%c\n", 4)
}
func Hang(chang int,str2 string){
//判断字符串里面有几个汉字
chineNum:=ChineseCount(str2)
len2:=len([]rune(str2))+chineNum
//第二行
//str2 := "wangwei" //第二行要输出的内容
if (len([]rune(str2))-chineNum)%2 == 0 {
str2 = str2 + " "
}
//fmt.Printf("%s%d\n","英文字符有:",len([]rune(str2))-chineNum)
ziBeg := chang/2 - len2/2
ziEnd := chang/2 + len2/2
//fmt.Printf("%s%d,%s%d,%s%d,%s%d,%s%d","表格宽度",chang,"汉字个数",chineNum,"字符串占用宽度",len2,"字符串开始位",ziBeg,"字符串结束位",ziEnd)
fmt.Printf("%c", 5)
for i := 1; i < ziBeg; i++ {
fmt.Printf("%c", ' ')
}
fmt.Printf(str2)
for i := 1; i < chang-ziEnd-1; i++ {
fmt.Printf("%c", ' ')
}
fmt.Printf("%c\n", 5)
}
func ChineseCount(str1 string) (count int) {
for _, char := range str1{
if unicode.Is(unicode.Han, char){
count++
}
}
return
}
版权声明:本文为m0_46426259原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。