打印带边框的文本
(lines []string)
| 456 | |
| 457 | // 打印带边框的文本 |
| 458 | func printBox(lines []string) { |
| 459 | maxLen := 0 |
| 460 | for _, line := range lines { |
| 461 | displayWidth := getDisplayWidth(line) |
| 462 | if displayWidth > maxLen { |
| 463 | maxLen = displayWidth |
| 464 | } |
| 465 | } |
| 466 | |
| 467 | if maxLen < 60 { |
| 468 | maxLen = 60 |
| 469 | } |
| 470 | |
| 471 | // 顶部边框 |
| 472 | fmt.Print("╔") |
| 473 | for i := 0; i < maxLen+2; i++ { |
| 474 | fmt.Print("═") |
| 475 | } |
| 476 | fmt.Println("╗") |
| 477 | |
| 478 | // 内容 |
| 479 | for _, line := range lines { |
| 480 | displayWidth := getDisplayWidth(line) |
| 481 | padding := maxLen - displayWidth |
| 482 | fmt.Printf("║ %s%s ║\n", line, strings.Repeat(" ", padding)) |
| 483 | } |
| 484 | |
| 485 | // 底部边框 |
| 486 | fmt.Print("╚") |
| 487 | for i := 0; i < maxLen+2; i++ { |
| 488 | fmt.Print("═") |
| 489 | } |
| 490 | fmt.Println("╝") |
| 491 | } |
| 492 | |
| 493 | // 计算字符串的显示宽度(中文字符占2个宽度,英文字符占1个宽度) |
| 494 | func getDisplayWidth(s string) int { |
no test coverage detected