Ios 替换字符串模式的引用

Ios 替换字符串模式的引用,ios,string,swift,Ios,String,Swift,这是我从服务器返回的字符串: var arrayString = "IT34:1, IT35:2, IT36:1, IT35:3" 我想消除“:1”、“:2”和“我在使用: let cleanStr = arrayString.stringByReplacingOccurrencesOfString(":1", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil) let cleanStr1 =

这是我从服务器返回的字符串:

var arrayString = "IT34:1, IT35:2, IT36:1, IT35:3"
我想消除“:1”、“:2”和“我在使用:

let cleanStr = arrayString.stringByReplacingOccurrencesOfString(":1", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)

let cleanStr1 = cleanStr.stringByReplacingOccurrencesOfString(":2", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
等等


这似乎不是很有效。只需一个
.stringByReplacingOccurrencesOfString
方法就可以实现这一点吗?类似于“:(一个数字)”?

这可以使用正则表达式完成:

let string = "IT34:1, IT35:2, IT36:1, IT35:3"
var cleanStr = string
if let regex = NSRegularExpression(pattern: ":[0-9]", options:.CaseInsensitive, error: nil) {
    cleanStr = regex.stringByReplacingMatchesInString(string, options: nil, range: NSMakeRange(0, countElements(string)), withTemplate: "")
}
println(cleanStr)

在目标C中:

NSString *string = @"IT34:1, IT35:2, IT36:1, IT35:3";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@":[0-9]" options:NSRegularExpressionCaseInsensitive error:nil];
NSString *newString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];
NSLog(@"%@", newString);

我不知道这些:1“东西的确切模式,但这里有一个解决方案,你可能会摆弄:

let cleanStr = ", ".join(arrayString.componentsSeparatedByString(", ").map { ($0 as NSString).substringToIndex(4) })
只要“:1”有一个数字,此解决方案就可以工作

这里有一个通用的解决方案:

let cleanStr = ", ".join(arrayString.componentsSeparatedByString(", ").map {
    ($0 as NSString).componentsSeparatedByString(":")[0] as String
})

我能理解为什么你只想要其中的一个,这是一个很长的方法名称。我猜有一个正则表达式的方式做得相当干净。Yayyy。正处在翻译你原来的Objc C to SWIFT答案的过程中,但是你把我打败了。谢谢!我打算建议ReGEX,但是这是一个非常明确、完整的答案。(在Swift和Objective-C两种版本中都有!)干得好。有一个问题。显然在Swift 1.2中,
countElements
已被重命名为
count
,因此,如果您使用的是Xcode 6.3或更高版本,该位将不得不更改。我认为与正则表达式方法相比,这将大大降低效率,但我不能100%确定。测试会很有趣。@nhgrif请知道您可以哦,100%确定!我做了一个粗略的基准测试,regex解决方案似乎快了10倍。谢谢你的想法。