-1

我正在尝试用 unicode 字符标记字符串。我无法从字符串前面删除 unicode 标记。我努力了

 code = String(code[prefix.endIndex...])

  let range = code.index(code.startIndex, offsetBy:0)..<prefix.endIndex
  code.removeSubrange(range)

非 unicode 标记(在前缀中)被正确删除。例如,代码 = "a + b" 和前缀 = "a"。两个语句都返回“+ b”。但是,对于 code = "← a + b" 和 prefix = "←",上述两个语句都返回代码为;

 "\u{86}\u{90} a + b"   

目标是删除 ← 所以输出应该是;

 " a + b"
4

2 回答 2

0

改用原生 unicode 兼容版本的字符移除器:

对于删除和返回第一个元素:

let justFirst = code.removeFirst()

用于删除第一个并返回剩余的字符

let allButFirst = code.dropFirst()

同样的last角色:

let justFirst = code.removeLast()
let allButFirst = code.dropLast()

Array如果您对数组感到满意,您也可以将其转换为标准,然后使用它:

let array = code.map { $0 }
于 2019-08-22T19:43:50.070 回答
0

这是一种标记字符串的简单方法。您可以从结果数组中删除您想要的任何字符tokens

func testTokenization() {
    let input = "← a + b"
    var tokens: [String] = []
    for character in input {
        tokens.append(String(character))
    }
    print(tokens)
}
于 2019-08-22T19:44:12.933 回答