如何在特定字母后将字符串插入另一个字符串?

时间:2015-04-04 16:25:07

标签: ios cocoa-touch swift nsstring

我将数据库中的高度存储为62或511而不是6英尺2或5英尺11。

这是我准备要保存的字符串的方式:

    let height = 6 ft 2
    let myNewString = height.stringByReplacingOccurrencesOfString(" ft ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
    println(myNewString) // 62

我现在要做的是在显示数据库中的数据时做相反的事情。

所以我想从数据库中取回“62”并将此字符串“ft”插入其中。我的目标是在应用程序上显示“6 ft 2”。

我该怎么做?

我想避免在我的数据库中存储两个专用于高度的列。我只知道如何连接字符串,但这并不完全连接字符串。我将它插入现有的字符串。

我很感激有效的方法。一直在四处寻找,似乎无法找到我的解决方案。

感谢您的时间。

更新

阅读评论后,我想知道在字符串中第一个字符后添加小数点是否更好4.2,4.10,5.4,5.11,6.2等

let height = 6 ft 2
let myNewString = height.stringByReplacingOccurrencesOfString(" ft ", withString: ".", options: NSStringCompareOptions.LiteralSearch, range: nil)
println(myNewString) // 6.2

2 个答案:

答案 0 :(得分:2)

将高度完全保存在英寸中可能是个更好的主意(例如,存储74为6'2“)。

反正:

    let input = "62"
    let feet = (input as NSString).substringToIndex(1)
    let inches = (input as NSString).substringFromIndex(1)
    let output = "\(feet) ft \(inches)"

如果您不喜欢NSString的使用,可以这样避免:

    let input = "62";
    let feet = input.substringToIndex(input.startIndex.successor())
    let inches = input.substringFromIndex(input.startIndex.successor())
    let output = "\(feet) ft \(inches)"

答案 1 :(得分:2)

Swift的String符合RangeReplaceableCollectionTypesplice方法 - splice允许您将集合插入另一个集合。由于字符串是集合,这意味着您可以编写:

var height = "62"
if !height.isEmpty {
    height.splice(" ft ", atIndex: height.startIndex.successor())
} // height is now "6 ft 2"

或者如果你知道你只想要“ft”之前的第一个字符,你可以这样做:

let height = "62"
if let feet = first(height) {
    let inches = dropFirst(height)
    let heightWithFt = "\(feet) ft \(inches)"
}