gpt4 book ai didi

swift - NSScanner 扫描字符串 : intoString: not working in playground

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:43 25 4
gpt4 key购买 nike

我正在尝试为一些天气数据制作我的 xml 解析器的快速版本:

import Cocoa
import Foundation

let string2: NSString? = "cdefg jajaja <time> bbb"

let scanner = NSScanner(string: string2)
scanner.string
let searchString:NSString? = "<time"
var result: NSString? = nil //= AutoreleasingUnsafePointer<NSString?>

scanner.charactersToBeSkipped = nil
scanner.scanString(searchString, intoString: nil) // this is not working (false)

scanner.scanUpToString( ">", intoString: &result) // this is working

result // result = "cdefg jajaja <time"

为什么“scanner.scanString(searchString, intoString: nil)”返回 nil?

最佳答案

实际上,您的问题与 Swift 无关(等效的 Objective-C 代码也是如此)——您只是在使用 NSScanner错误的。来自docs对于 scanString:intoString:

Return Value

YES if string matches the characters at the scan location, otherwise NO.

基本上,scanString:intoString:要么找到searchString在当前位置(在您的示例中,在开始处),或者它返回 false .由于您的字符串以 "cdefg" 开头而不是 "<time" , 该方法返回 false并且不推进扫描位置。如果删除 "cdefg jajaja "从你的字符串中,你的 scanString:intoString:调用将返回 true并前进扫描位置,使下一个字符为">" .或者,您可以更改 scanString:intoString:调用 scanUpToString:intoString:简单地丢弃之前和包括"<time"的任何东西.

关于swift - NSScanner 扫描字符串 : intoString: not working in playground,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24096915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com