在Swift中获取空范围

在Swift中获取空范围,swift,range,Swift,Range,我对Swift非常陌生,并尝试使用正则表达式,但从字符串中获取匹配项似乎是一项无法克服的任务 这是我目前的做法 printdata.substringwith:data.rangeof:[a-zA-Z]at,选项:。正则表达式 这不起作用,因为 必须将可选类型“Range”的值展开为类型“Range”的值 我猜这与它可能为null有关,所以现在我想使用??接线员 printdata.substringwith:data.rangeof:[a-zA-Z]at,选项:。正则表达式??射程 我想做的是

我对Swift非常陌生,并尝试使用正则表达式,但从字符串中获取匹配项似乎是一项无法克服的任务

这是我目前的做法

printdata.substringwith:data.rangeof:[a-zA-Z]at,选项:。正则表达式

这不起作用,因为

必须将可选类型“Range”的值展开为类型“Range”的值

我猜这与它可能为null有关,所以现在我想使用??接线员

printdata.substringwith:data.rangeof:[a-zA-Z]at,选项:。正则表达式??射程

我想做的是为它提供一个空范围对象,但似乎不可能创建所需类型的空对象


有什么建议吗?

对于范围,根本没有无参数的初始化器

创建空字符串范围的一种方法是使用:

data.startIndex..<data.startIndex

对于范围,根本没有无参数的初始化器

创建空字符串范围的一种方法是使用:

data.startIndex..<data.startIndex

与其尝试创建一个空范围,我建议创建一个空子字符串,以防不匹配。范围很容易出错,所以使用这种方法可以省去很多麻烦

let match: Substring
if let range = data.range(of: "[a-zA-Z]at", options: .regularExpression) {
    match = data[range]
} else {
    match = ""
}
print(match)

与其尝试创建一个空范围,我建议创建一个空子字符串,以防不匹配。范围很容易出错,所以使用这种方法可以省去很多麻烦

let match: Substring
if let range = data.range(of: "[a-zA-Z]at", options: .regularExpression) {
    match = data[range]
} else {
    match = ""
}
print(match)