Nev*_*ore 11 byte lowercase go uppercase
我有一个[]byte,b我希望选择一个字节,b[pos]并将其更改为大写(然后小写)该bytes类型有一个名为的方法ToUpper().如何将其用于单个字节?
ToUpper单个字节我使用的OneOfOne效率最高(当呼叫数千次时)
val = byte(unicode.ToUpper(rune(b[pos])))
Run Code Online (Sandbox Code Playgroud)
为了找到字节并改变值
b[pos] = val
Run Code Online (Sandbox Code Playgroud)
有时,我想检查一个字节是大写还是小写,而不是改变一个字节的大小写 ; 所有大写的罗马字母字节都低于小写字节的值.
func (b Board) isUpper(x int) bool {
return b.board[x] < []byte{0x5a}[0]
}
Run Code Online (Sandbox Code Playgroud)
One*_*One 18
对于单个字节/符文,您可以使用unicode.ToUpper.
b[pos] = byte(unicode.ToUpper(rune(b[pos])))
Run Code Online (Sandbox Code Playgroud)
我想提醒 OP,它bytes.ToUpper()在字节切片中使用 UTF-8 编码的 unicode 代码点上unicode.ToUpper()运行,而在单个 unicode 代码点上运行。
通过要求将单个字节转换为大写,OP 暗示“ b”字节切片包含 UTF-8 以外的其他内容,可能是 ASCII-7 或某些 8 位编码,例如 ISO Latin-1(例如)。在这种情况下,OP 需要编写 ISO Latin-1(例如)ToUpper()函数,或者 OP 必须在使用bytes.ToUpper()orunicode.ToUpper()函数之前将 ISO Latin-1(例如)字节转换为 UTF-8 或 unicode 。
任何更少的东西都会产生一个悬而未决的错误。前面提到的函数都不能将所有可能的 ISO Latin-1(例如)编码字符正确转换为大写。
| 归档时间: |
|
| 查看次数: |
6771 次 |
| 最近记录: |