我正在尝试在Swift中找到NSRange.location
和NSRange.length
的替代品。
例如sip: [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)
我试着从中提取名字。我可以使用String中的componentsSeperatedBy
方法来实现。但我想知道是否可以使用类似于Objective C的范围来完成。
我已经有旧的遗留Objective C代码,我正在尝试将其转换为Swift。
// Extract name from sip:[email protected].....
NSString *name = nil;
NSRange rangeForSip;
NSRange rangeFor@;
rangeForSip = [self rangeOfString: @"sip:"];
if (rangeForSip.location == NSNotFound) {
//Look for sips
rangeForSip = [self rangeOfString: @"sips:"];
}
match2 = [self rangeOfString: @"@"];
if ((rangeForSip.location != NSNotFound) && ([email protected] != NSNotFound)) {
name = [self substringWithRange:NSMakeRange(rangeForSip.location + rangeForSip.length, [email protected] - (rangeForSip.location + rangeForSip.length))];
} else if ([email protected] != NSNotFound) {
// Extract name from sip:[email protected].....
name = [self substringWithRange:NSMakeRange(0, [email protected])];
}
1条答案
按热度按时间9rnv2umw1#
与
NSString
中的range
方法类似,SwiftStrings
也有一个range
方法,可以在字符串中查找特定的子字符串。您可以通过在找到的“sip:“和“@"范围的
lowerBound
和upperBound
上使用..<
运算符来创建所需的范围。然后,您可以将范围传递给
String
下标,以获得Substring
形式的结果。如果我没理解错的话,你想要的逻辑是: