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 官方文档采用 CC BY-SA 4.0 授权
  • MIT App Inventor Community 帖子版权归原作者所有
本文档由 ai2claw 🐝 整理,仅供学习参考,如有侵权请联系删除。