我正在做QR解析器。在我的QR中我有一个字段"encoding",它显示了一个字符串编码("1"= w1251,"2"= UTF8,"3"= KOI8-R)。我需要解码UTF-8中的1,3,所以没问题:
private fun checkEncoding(encoding: String, decodedString: String) =
when (encoding) {
"1" -> decodedString.toByteArray(Charset.forName("windows-1251")).toString(Charset.forName("UTF-8"))
"3" -> decodedString.toByteArray(Charset.forName("KOI8-R")).toString(Charset.forName("UTF-8"))
"2" -> decodedString
else -> throw ErrorsBuilder.UNKNOWN_ENCODING_ERROR.unknownEncodingException(decodedString)
}
但有时我们会得到错误的QR,它的encoding = 1,但字符串为UTF8。我们希望处理这种情况,也许任何人都可以帮助。我们决定制作下一个逻辑:如果字符串包含俄语符号-〉不对其执行任何操作,则为UTF8。否则-〉do checkEncoding()
第一个想法:检查它们是否是字符串中的俄语字母。我这样做:
fun main() {
val string1 = "Name=Филиал"
val string2 = "Name=СчеС"
val string3 = "ФФФ"
println(parse2(string1)) //false
println(parse2(string2)) //false
println(parse2(string3)) //true }
fun parse2(string: String): Boolean {
return string.matches("[а-яёА-ЯЁ]+".toRegex())
}
你怎么能检查字符串中至少有一个俄语符号和许多英语符号?比如matchesAny()
?
字符串"ST00011"中的第二个问题|Name = Р С ‡ Р µ С "symbols" Р "," С "也是俄语。我决定做一些计数器,它可以从字符串中计数俄语符号,并将该数字与字符串长度进行比较。但我不知道如何执行它。
所以也许你对我的情况有什么想法和更好的解决方案?或者可以给我标题上的问题的答案?
多谢了
1条答案
按热度按时间slwdgvem1#
简单的正则表达式检查怎么样: