我正在尝试解析TwitchIRC表情并从字符串中提取它。Twitch IRC message提供了一个范围,该范围是字符串中emote的位置。例子:
表示emote Kappa位于字符串“Kappa abcdef”的索引0到4之间。
下面是我的函数,它将根据范围返回emote:
func extractEmoteName(from message: String, rangeStart: Int, rangeEnd: Int) -> String? {
guard
let indexStart = message.index(message.startIndex, offsetBy: rangeStart, limitedBy: message.endIndex),
let limitIndex = message.index(message.endIndex, offsetBy: -1, limitedBy: message.startIndex),
let indexEnd = message.index(message.startIndex, offsetBy: rangeEnd, limitedBy: limitIndex)
else {
print("out of bounds")
return nil
}
return String(message[indexStart ... indexEnd])
}
在示例字符串上使用:
extractEmoteName(from: "Kappa abcdef", rangeStart: 0, rangeEnd: 4)
Kappa
因此。
nil
:
extractEmoteName(from: "â ï¸ Kappa", rangeStart: 3, rangeEnd: 7) // prints "out of bounds"
同时,由于Twitch提供的范围不同,因此具有单个标量表情的消息可以很好地解析:
string=“Kappa”;范围开始=2;范围结束=6
extractEmoteName(from: "ð Kappa", rangeStart: 2, rangeEnd: 6) // returns "Kappa"
应该改变什么
extractEmoteName
让它和所有表情符号一起工作?