Swift:格式字符串宽度 [英] Swift: Format String width

查看:153
本文介绍了Swift:格式字符串宽度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在C / C ++,Java和其他许多语言中,我想做的事情非常简单。所有我想要做的就是能够指定一个字符串的宽度,类似于这个:

  printf(% -  15s ,var); 

这将创建15个字符的字段宽度。我做了很多Google搜索。我已经尝试过使用> COpaquepointer 以及字符串(格式:以各种方式,没有运气。非常感谢。我可能错过了一些东西,当谷歌搜索。

解决方案

你最好自己动手



$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $' (length - str0.characters.count),repeatedValue:Character())
str20r.appendContentsOf(str0)
//alpha
$ b $ // 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 .coun t
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
让s0 = formatString(str,fixLenght:3)
让s1 = formatString(str,fixLenght:3,justifyToTheRigth:true)
让s2 = formatString(str,fixLenght:10,spacer: - ))
let s3 = formatString(str,fixLenght:10,spacer:Charact er( - ),justifyToTheRigth:true)

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

打印

  ABC 
FGH
ABCDEFGH--
--ABCDEFGH


What I'm wanting to do is very simple in C/C++, Java, and so many other languages. All I want to do is be able to specify the width of a string, similar to this:

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

This would create of a field width of 15 characters. I've done a lot of googling. I've tried using COpaquepointeras well as String(format:in various ways with no luck. Any suggestions would be greatly appreciated. I could have missed something when googling.

解决方案

You are better to do it yourself

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               "

if you need something 'more general'

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, fixLenght: 10, spacer: Character("-"), justifyToTheRigth: true)

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

which prints

ABC
FGH
ABCDEFGH--
--ABCDEFGH

这篇关于Swift:格式字符串宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆