在Swift中检查windows换行符

时间:2016-09-26 07:46:21

标签: swift xcode

我试图循环一个带有无限量参数的输入文件

let whiteSpaceAndNL = NSMutableCharacterSet.whitespaceAndNewlineCharacterSet()

while let command = scanner.scanUpToCharactersFromSet(whiteSpaceAndNL) {
  switch command {
    case "reset":
      print("Resetting")
    case "run":
      let label = scanner.scanUpToCharactersFromSet(whiteSpaceAndNL)
      print("Running: \(label)")

      // This doesn't work
      let lastChar = scanner.string[scanner.string.startIndex.advancedBy(scanner.scanLocation)]
      let newlineChars = NSMutableCharacterSet.newlineCharacterSet()
      while !scanner.atEnd && newlineChars.characterIsMember(lastChar) {
        let nextParam = scanner.scanUpToCharactersFromSet(whiteSpaceAndNL)
        print(nextParam)
      }

    default: break
  }
}

在大多数情况下,我只需知道一行中的第一项,因为该行的其余部分将遵循具有特定项目数的特定格式。 但是,在" run" case可以在标签后插入任意数量的参数。 因此,我需要区分空白和换行,如果扫描程序扫描到空白,则会有另一个参数,否则会有一个新命令。

我已经解决了#39;这是通过检查当前scanLocation之前的最后一个字符(lastChar)是否是换行符(" \ n")。这在我的机器上工作但是我遇到了一些机器的输入问题,很可能是由于窗口行结束。

while !scanner.atEnd && scanner.string[scanner.string.startIndex.advancedBy(scanner.scanLocation)] != "\n" {

有人可以向我解释第二个代码段在某些机器上不起作用吗?第一个代码片段是我尝试改进代码,但这不起作用,因为lastChar不是unicode字符。

0 个答案:

没有答案