如何在swift中的某个字符前获取字符串?下面的代码是我在Objective C中的表现,但似乎无法在Swift中执行相同的任务 . 有关如何实现这一目标的任何提示或建议? rangeOfString
似乎在swift中根本不起作用(虽然Swift一直在为我表演) .
NSRange range = [time rangeOfString:@" "];
NSString *startDate =
[time substringToIndex:range.location];
从上面的代码中可以看出,我能够在Objective C中的空格字符之前获取字符串 .
编辑:如果我尝试这样的事情
var string = "hello Swift"
var range : NSRange = string.rangeOfString("Swift")
我收到以下错误 .
无法将表达式的类型'NSString'转换为''(String,options:NSStringCompareOptions,range:Range?,locale:NSLocale?)'
不确定我做错了什么或如何正确解决它 .
9 回答
Output is: Hello
下面是一个整体组合
使用componentsSeparatedByString()如下所示:
或者使用您的具体案例:
您可以使用
String
类提供的rangeOfString()
执行相同的操作You can also 用你的方法实现它
substringToIndex()
Swift 3 UPDATE:
希望这可以帮到你 ;)
跟进Syed Tariq的回答:如果你只想在分隔符之前使用字符串(否则,你收到一个数组[String]):
如果你想要一个不涉及基础的解决方案,你可以使用
find
并切片:如果在没有找到这样的字符的情况下显式想要一个空字符串,则可以使用nil-coalescing运算符:
注意,与
componentsSeparatedByString
技术不同,这不需要创建数组,只需要扫描到第一次出现的字符,而不是将整个字符串分解为字符分隔的数组 .我的2美分:-)使用Swift 3.0,类似于PHP
strstr
Usage1
Usage2
要将String变为部分直到第一次出现指定的String,您可以像这样扩展String:
这可以这样调用:
您可以使用
rangeOfString
,但它返回Range<String.Index>
类型,而不是NSRange
: