我相信我遇到了Swift版本问题,但我不太确定。代码在我的Xcode平台上可以工作,但在在线Swift编译器中无法工作。有其他人遇到过这个问题或知道我可以用什么替换以下检查字符的行吗?
if i == 0 || !((line.range(of: ":") != nil))
这是我的代码:
import Foundation
func hackTheString(line: String){
var maxOpen: Int = 0
var minOpen: Int = 0
minOpen = 0
maxOpen = 0
let i = 0
while i < line.characters.count {
for character in line.characters {
if character == "(" {
maxOpen += 1
if i == 0 || !((line.range(of: ":") != nil)) {
minOpen += 1
}
}
else if character == ")"{
minOpen = max(0,minOpen-1)
if i == 0 || !((line.range(of: ":") != nil)){
maxOpen -= 1;
}
if maxOpen < 0{
break
}
}
}
if maxOpen >= 0 && minOpen == 0{
print("YES")
}else{
print("NO")
}
}
}
while let line = readLine() {
print(hackTheString(line))
}
在线编译器给出的错误信息如下:
source.swift:17:37: error: value of type 'String' has no member 'range'
if i == 0 || !((line.range(of: ":") != nil)) {
^~~~ ~~~~~
source.swift:24:37: error: value of type 'String' has no member 'range'
if i == 0 || !((line.range(of: ":") != nil)){
^~~~ ~~~~~
line.rangeOfString(":")
。 - rmaddy!((line.range(of: ":") != nil))
呢?这和line.range(of: ":") == nil
是一样的。为什么要双重否定?为什么要多加一组括号? - rmaddy