加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift:格式化字符串宽度

发布时间:2020-12-14 04:37:36 所属栏目:百科 来源:网络整理
导读:我想要做的是在C/C++,Java和许多其他语言中非常简单.我想要做的就是能够指定字符串的宽度,类似于: printf("%-15s",var); 这将创建15个字符的字段宽度.我做了很多谷歌搜索.我已经尝试过使用COpaquepointeras和String(格式:以各种方式没有运气.任何建议都会
我想要做的是在C/C++,Java和许多其他语言中非常简单.我想要做的就是能够指定字符串的宽度,类似于:

printf("%-15s",var);

这将创建15个字符的字段宽度.我做了很多谷歌搜索.我已经尝试过使用COpaquepointeras和String(格式:以各种方式没有运气.任何建议都会非常感激.我可能在谷歌搜索时遗漏了一些东西.

解决方法

你最好自己动手

let str0 = "alpha"
let length = 20
// right justify
var str20r = String(count: (length - str0.characters.count),repeatedValue: Character(" "))
str20r.appendContentsOf(str0)
// "               alpha"

// left justify
var str20l = str0
str20l.appendContentsOf(String(count: (length - str0.characters.count),repeatedValue: Character(" ")))
// "alpha               "

如果你需要更“一般”的东西

func formatString(str: String,fixLenght: Int,spacer: Character = Character(" "),justifyToTheRigth: Bool = false)->String {
    let c = str.characters.count
    let start = str.characters.startIndex
    let end = str.characters.endIndex
    var str = str
    if c > fixLenght {
        switch justifyToTheRigth {
        case true:
            let range = start.advancedBy(c - fixLenght)..<end
            return String(str.characters[range])
        case false:
            let range = start..<end.advancedBy(fixLenght - c)
            return String(str.characters[range])
        }
    } else {
        var extraSpace = String(count: fixLenght - c,repeatedValue: spacer)
        if justifyToTheRigth {
            extraSpace.appendContentsOf(str)
            return extraSpace
        } else {
            str.appendContentsOf(extraSpace)
            return str
        }
    }
}

let str = "ABCDEFGH"
let s0 = formatString(str,fixLenght: 3)
let s1 = formatString(str,fixLenght: 3,justifyToTheRigth: true)
let s2 = formatString(str,fixLenght: 10,spacer: Character("-"))
let s3 = formatString(str,spacer: Character("-"),justifyToTheRigth: true)

print(s0)
print(s1)
print(s2)
print(s3)

打印

ABC
FGH
ABCDEFGH--
--ABCDEFGH

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读