如何在特定字母后将一个字符串插入另一个字符串?
How do I insert a string into another string after a specific letter?
我在数据库中将身高存储为 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 英尺 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
纯粹以英寸为单位存储高度可能是更好的主意(例如,存储 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)"
Swift 的 String
符合 RangeReplaceableCollectionType
,它有一个 splice
方法 – 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)"
}
我在数据库中将身高存储为 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 英尺 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
纯粹以英寸为单位存储高度可能是更好的主意(例如,存储 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)"
Swift 的 String
符合 RangeReplaceableCollectionType
,它有一个 splice
方法 – 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)"
}