Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wa-lang
wa
提交
e3145d88
wa
项目概览
wa-lang
/
wa
9 个月 前同步成功
通知
68
Star
655
Fork
45
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
wa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e3145d88
编写于
8月 29, 2023
作者:
chai2010
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
unicode/utf8 添加 EncodeRuneString 函数
上级
1329c4a0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
6 deletion
+9
-6
waroot/src/unicode/utf8/utf8.wa
waroot/src/unicode/utf8/utf8.wa
+9
-6
未找到文件。
waroot/src/unicode/utf8/utf8.wa
浏览文件 @
e3145d88
...
...
@@ -80,13 +80,11 @@ global first = [256]u8{
s5, s6, s6, s6, s7, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xF0-0xFF
}
// acceptRange gives the range of valid values for the second byte in a UTF-8
// sequence.
type acceptRange struct {
lo
:
u8 // lowest value for second byte.
hi
:
u8 // highest value for second byte.
lo
:
u8 // lowest value for second byte.
hi
:
u8 // highest value for second byte.
}
// acceptRanges has size 16 to avoid bounds checks in the code that uses it.
...
...
@@ -98,7 +96,6 @@ global acceptRanges = [16]acceptRange{
4: {locb, 0x8F},
}
// FullRune reports whether the bytes in p begin with a full UTF-8 encoding of a rune.
// An invalid encoding is considered a full Rune since it will convert as a width-1 error rune.
func FullRune(p: []byte) => bool {
...
...
@@ -341,6 +338,12 @@ func RuneLen(r: rune) => int {
return -1
}
func EncodeRuneString(r: rune) => string {
p := make([]byte, 0, 4)
n := EncodeRune(p, r)
return string(p[:n])
}
// EncodeRune writes into p (which must be large enough) the UTF-8 encoding of the rune.
// If the rune is out of range, it writes the encoding of RuneError.
// It returns the number of bytes written.
...
...
@@ -385,7 +388,7 @@ func EncodeRune(p: []byte, r: rune) => int {
// encodings are treated as single runes of width 1 byte.
func RuneCount(p: []byte) => int {
np := len(p)
n
:
int
n
:
int
for i := 0; i < np; {
n++
c := p[i]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录