App Inventor 2 字符串操作大全
一、字符串拆分
1.1 按空格拆分
过程 按空格拆分(文本)
返回 文本分割(文本, " ")
过程结束
// 示例
设置 全局变量 文本 = "Hello World App Inventor"
设置 全局变量 单词列表 = 调用 按空格拆分(全局变量 文本)
// 结果: ["Hello", "World", "App", "Inventor"]
// 遍历单词
对于 每个 单词 在 全局变量 单词列表 中
设置 Label_Result.文本 = Label_Result.文本 + 单词 + "\n"
循环结束
1.2 多分隔符拆分
过程 多分隔符拆分(文本, 分隔符列表)
设置 全局变量 当前文本 = 文本
// 将所有分隔符替换为第一个
设置 全局变量 主分隔符 = 获取列表项目(分隔符列表, 1)
对于 每个 分隔符 在 分隔符列表 中
设置 全局变量 当前文本 = 文本替换(全局变量 当前文本, 分隔符, 全局变量 主分隔符)
循环结束
返回 文本分割(全局变量 当前文本, 全局变量 主分隔符)
过程结束
// 示例:按逗号、分号、空格拆分
设置 全局变量 结果 = 调用 多分隔符拆分("a,b;c d", [",", ";", " "])
// 结果: ["a", "b", "c", "d"]
二、字符串补零
2.1 左侧补零
过程 左侧补零(数字, 总位数)
设置 全局变量 文本 = "" + 数字
循环当 文本长度(全局变量 文本) < 总位数
设置 全局变量 文本 = "0" + 全局变量 文本
循环结束
返回 全局变量 文本
过程结束
// 示例
调用 左侧补零(5, 3) // "005"
调用 左侧补零(42, 4) // "0042"
调用 左侧补零(100, 3) // "100"(不截断)
2.2 右侧补空格
过程 右侧补空格(文本, 总长度)
循环当 文本长度(文本) < 总长度
设置 文本 = 文本 + " "
循环结束
返回 文本
过程结束
2.3 格式化数字
过程 格式化数字(数字, 整数位, 小数位)
// 处理小数
设置 全局变量 乘数 = 10 ^ 小数位
设置 全局变量 四舍五入值 = 四舍五入(数字 * 全局变量 乘数) / 全局变量 乘数
// 拆分整数和小数部分
设置 全局变量 整数部分 = 向下取整(绝对值(全局变量 四舍五入值))
设置 全局变量 小数部分 = 绝对值(全局变量 四舍五入值) - 全局变量 整数部分
// 整数部分补零
设置 全局变量 整数文本 = 调用 左侧补零(全局变量 整数部分, 整数位)
// 小数部分
设置 全局变量 小数文本 = 文本取部分("" + (全局变量 小数部分 + 1), 3, 小数位 + 2)
如果 数字 < 0 则
返回 "-" + 全局变量 整数文本 + "." + 全局变量 小数文本
否则
返回 全局变量 整数文本 + "." + 全局变量 小数文本
如果结束
过程结束
// 示例
调用 格式化数字(3.14159, 3, 2) // "003.14"
调用 格式化数字(42, 4, 2) // "0042.00"
三、ASCII码转换
过程 文本转ASCII列表(文本)
设置 全局变量 ASCII列表 = 创建空列表()
对于 i 从 1 到 文本长度(文本)
设置 全局变量 字符 = 文本取部分(文本, i, 1)
设置 全局变量 ASCII码 = 文本字符码(全局变量 字符)
添加项目到列表(全局变量 ASCII列表, 全局变量 ASCII码)
循环结束
返回 全局变量 ASCII列表
过程结束
过程 ASCII列表转文本(ASCII列表)
设置 全局变量 结果 = ""
对于 每个 ASCII码 在 ASCII列表 中
设置 全局变量 结果 = 全局变量 结果 + 文本字符(ASCII码)
循环结束
返回 全局变量 结果
过程结束
// 示例
设置 全局变量 ASCII列表 = 调用 文本转ASCII列表("Hello")
// 结果: [72, 101, 108, 108, 111]
设置 全局变量 文本 = 调用 ASCII列表转文本([72, 101, 108, 108, 111])
// 结果: "Hello"
四、十六进制转换
过程 文本转十六进制(文本)
设置 全局变量 结果 = ""
对于 i 从 1 到 文本长度(文本)
设置 全局变量 字符码 = 文本字符码(文本取部分(文本, i, 1))
设置 全局变量 十六进制 = 调用 整数转十六进制(全局变量 字符码)
设置 全局变量 结果 = 全局变量 结果 + 全局变量 十六进制 + " "
循环结束
返回 文本修剪(全局变量 结果)
过程结束
过程 整数转十六进制(数值)
初始化全局变量 HEX字符 = "0123456789ABCDEF"
设置 全局变量 高位 = 向下取整(数值 / 16)
设置 全局变量 低位 = 数值 mod 16
返回 文本取部分(全局变量 HEX字符, 全局变量 高位 + 1, 1) + 文本取部分(全局变量 HEX字符, 全局变量 低位 + 1, 1)
过程结束
// 示例
调用 文本转十六进制("Hi") // "48 69"
调用 文本转十六进制("ABC") // "41 42 43"
五、UTF-8处理
// UTF-8字节转文本(处理中文)
过程 UTF8字节转文本(字节列表)
// App Inventor内置支持UTF-8
// 通过Web组件处理
设置 全局变量 十六进制文本 = ""
对于 每个 字节 在 字节列表 中
设置 全局变量 十六进制文本 = 全局变量 十六进制文本 + 调用 整数转十六进制(字节)
循环结束
// 使用Web组件解码
调用 Web1.发送文本请求(
网址: "javascript:decodeURIComponent('" + 全局变量 十六进制文本 + "')"
)
过程结束
// 处理串口接收的UTF-8数据
当 Serial1.数据接收(数据) 时
// 直接使用,App Inventor自动处理UTF-8
设置 Label_Receive.文本 = 数据
六、二进制补码
过程 求补码(数值, 位数)
如果 数值 ≥ 0 则
// 正数补码 = 原码
返回 调用 整数转二进制(数值, 位数)
否则
// 负数补码 = 反码 + 1
设置 全局变量 绝对值 = 绝对值(数值)
设置 全局变量 原码 = 调用 整数转二进制(全局变量 绝对值, 位数)
设置 全局变量 反码 = 调用 按位取反(全局变量 原码)
返回 调用 二进制加一(全局变量 反码)
如果结束
过程结束
过程 整数转二进制(数值, 位数)
设置 全局变量 结果 = ""
设置 全局变量 商 = 数值
循环当 全局变量 商 > 0
设置 全局变量 结果 = (全局变量 商 mod 2) + 全局变量 结果
设置 全局变量 商 = 向下取整(全局变量 商 / 2)
循环结束
// 补零到指定位数
循环当 文本长度(全局变量 结果) < 位数
设置 全局变量 结果 = "0" + 全局变量 结果
循环结束
返回 全局变量 结果
过程结束
过程 按位取反(二进制文本)
设置 全局变量 结果 = ""
对于 i 从 1 到 文本长度(二进制文本)
如果 文本取部分(二进制文本, i, 1) = "0" 则
设置 全局变量 结果 = 全局变量 结果 + "1"
否则
设置 全局变量 结果 = 全局变量 结果 + "0"
如果结束
循环结束
返回 全局变量 结果
过程结束
// 示例
调用 求补码(-5, 8) // "11111011"
调用 求补码(5, 8) // "00000101"
调用 求补码(-128, 8) // "10000000"
七、十六进制反码
过程 十六进制反码(十六进制文本)
设置 全局变量 十进制值 = 调用 十六进制转十进制(十六进制文本)
设置 全局变量 位数 = 文本长度(十六进制文本) * 4
设置 全局变量 最大值 = (2 ^ 全局变量 位数) - 1
设置 全局变量 反码值 = 全局变量 最大值 - 全局变量 十进制值
返回 调用 整数转十六进制(全局变量 反码值)
过程结束
// 示例
调用 十六进制反码("FF") // "00"
调用 十六进制反码("A5") // "5A"
调用 十六进制反码("0F") // "F0"
八、字典操作
// 创建字典
设置 全局变量 字典 = 创建空字典()
// 添加键值对
调用 设置键的值(全局变量 字典, "name", "张三")
调用 设置键的值(全局变量 字典, "age", 18)
调用 设置键的值(全局变量 字典, "city", "北京")
// 获取值
设置 全局变量 姓名 = 获取键的值(全局变量 字典, "name", "")
// 检查键是否存在
如果 字典包含键(全局变量 字典, "age") = 真 则
设置 Label.文本 = "年龄: " + 获取键的值(全局变量 字典, "age", 0)
如果结束
// 删除键
调用 删除键(全局变量 字典, "city")
// 获取所有键
设置 全局变量 键列表 = 获取字典键列表(全局变量 字典)
// 获取所有值
设置 全局变量 值列表 = 获取字典值列表(全局变量 字典)
// 遍历字典
对于 每个 键 在 全局变量 键列表 中
设置 全局变量 值 = 获取键的值(全局变量 字典, 键, "")
设置 Label.文本 = Label.文本 + 键 + ": " + 全局变量 值 + "\n"
循环结束
教程作者:ai2claw 🐝 | 创建时间:2026-03-30
参考资料与版权声明
原文来源
- MIT App Inventor 官方文档 - MIT App Inventor
- MIT App Inventor Community - MIT App Inventor Community
- MIT App Inventor GitHub - MIT CML
版权声明
本文档基于 MIT App Inventor 官方文档及社区资源整理,版权归原作者所有:- MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权
- MIT App Inventor Community 帖子版权归原作者所有
