相关疑难解决方法(0)

如何在Swift 4中使用字符串切片下标?

我有以下用Swift 3编写的简单代码:

let str = "Hello, playground"
let index = str.index(of: ",")!
let newStr = str.substring(to: index)
Run Code Online (Sandbox Code Playgroud)

从Xcode 9 beta 5,我得到以下警告:

' substring(to:)'已被弃用:请使用String带有'partial range from'运算符的切片下标.

如何在Swift 4中使用具有部分范围的切片下标

swift swift4

286
推荐指数
11
解决办法
12万
查看次数

Swift提取正则表达式匹配

我想从匹配正则表达式模式的字符串中提取子字符串.

所以我正在寻找这样的东西:

func matchesForRegexInText(regex: String!, text: String!) -> [String] {
   ???
}
Run Code Online (Sandbox Code Playgroud)

所以这就是我所拥有的:

func matchesForRegexInText(regex: String!, text: String!) -> [String] {

    var regex = NSRegularExpression(pattern: regex, 
        options: nil, error: nil)

    var results = regex.matchesInString(text, 
        options: nil, range: NSMakeRange(0, countElements(text))) 
            as Array<NSTextCheckingResult>

    /// ???

    return ...
}
Run Code Online (Sandbox Code Playgroud)

问题是,这matchesInString提供了我的一个数组NSTextCheckingResult,其中NSTextCheckingResult.range的类型的NSRange.

NSRange是不相容的Range<String.Index>,所以它阻止我使用text.substringWithRange(...)

有没有想过如何在没有太多代码的情况下在swift中实现这个简单的事情?

regex string ios swift

157
推荐指数
8
解决办法
11万
查看次数

Swift正则表达式:字符串匹配模式吗?

在Swift中,查看字符串是否与模式匹配的简单方法是什么?

伪代码示例:

if string matches pattern ...

if string =~ pattern ...
Run Code Online (Sandbox Code Playgroud)

(我已经阅读过Swift文档并且还没有看到正则表达式的功能.我已经阅读过添加一个新的=~运算符,这是一个好主意但比我想要的更复杂,因为这是一个教学项目.我试过rangeOfString但是得到错误:'String'没有成员'rangeOfString'.我正在寻找一个Swift解决方案,即不输入NSRegularExpression.我不需要对匹配结果数据做任何事情.)

regex string ios swift

30
推荐指数
3
解决办法
3万
查看次数

如何使用swift对正则表达式进行分组

在正则表达式中,您可以将不同的匹配分组以轻松地"匹配"给定匹配.

while match != nil {
  match = source.rangeOfString(regex, options: .RegularExpressionSearch)
  if let m = match {
    result.append(source.substringWithRange(m)
      source.replaceRange(m, with: "") 
  }
}
Run Code Online (Sandbox Code Playgroud)

以上作品找到了一系列的匹配,但它不能告诉我这个组.例如,如果我搜索封装在""中的单词,我想匹配一个"单词",但很快就只能获取单词

是否有可能迅速这样做?

regex swift

16
推荐指数
2
解决办法
9272
查看次数

Swift 3 - 如何在正则表达式中提取捕获的组?

我正在使用Swift 3并尝试访问捕获的组.

let regexp = "((ALREADY PAID | NOT ALR | PROVIDER MAY | READY | MAY BILL | BILL YOU | PAID)((.|\\n)*))(( \\d+)(\\.+|-+)(\\d\\d))"

// check if some substring is in the recognized text
if let range = stringText.range(of:regexp, options: .regularExpression) {
    let result = tesseract.recognizedText.substring(with:range)
}
Run Code Online (Sandbox Code Playgroud)

我希望能够提取出捕获的最后两个数字(\d\d),所以如果文本是:ALREADY PAID asfasdfadsfasdf 39.15,它将提取15.这是一个正则表达式构建器,显示我想要的内容.通常情况下,我可以做到$8第8组被提取,但我不知道如何在Swift 3中做到这一点.

http://regexr.com/3fh1e

regex swift swift3

9
推荐指数
3
解决办法
8783
查看次数

如何在Swift中使用正则表达式?

我在Swift中创建一个应用程序,我需要从字符串中捕获8个数字.这是字符串: index.php?page=index&l=99182677

我的模式是: &l=(\d{8,})

这是我的代码:

var yourAccountNumber = "index.php?page=index&l=99182677"
let regex = try! NSRegularExpression(pattern: "&l=(\\d{8,})", options: NSRegularExpressionOptions.CaseInsensitive)
let range = NSMakeRange(0, yourAccountNumber.characters.count)
let match = regex.matchesInString(yourAccountNumber, options: NSMatchingOptions.Anchored, range: range)
Run Code Online (Sandbox Code Playgroud)

首先,我不知道NSMatchingOptions官方的Apple库上有什么方法,我没有得到所有的.Anchored,.ReportProgress等东西.任何人都可以照亮我吗?

然后,当我print(match),那个变量([])似乎没有任何内容.

我正在使用Xcode 7 Beta 3和Swift 2.0.

regex swift

6
推荐指数
1
解决办法
6679
查看次数

标签 统计

swift ×6

regex ×5

ios ×2

string ×2

swift3 ×1

swift4 ×1