StringUtils 字符串工具扩展
介绍
StringUtils 扩展提供了基于 Apache Commons Lang 的文本处理工具函数。它提供了丰富的字符串操作方法,包括字符检测、文本提取、填充、验证等功能。
![]()
主要功能
- 字符和大小写检测
- 文本提取(左、右、中间)
- 文本填充和居中
- 字符串缩写
- ASCII 码转换
- 电子邮件和 IP 地址验证
- 字符串相似度计算(Levenshtein 距离)
三种函数变体
扩展提供三种函数变体以满足不同需求:
| 变体 | 说明 | 示例 |
|---|---|---|
| 无后缀 | 返回新字符串,不修改 Text 属性 | Left(3) |
| “This” 后缀 | 修改内部 Text 属性 | LeftThis(3) |
| “Of” 后缀 | 对传入的参数进行操作 | LeftOf("Hello", 3) |
下载
.aix拓展文件:
de.ullisroboterseite.ursai2stringutils.aix
.aia示例文件:
版本历史
| 版本 | 日期 | 修改内容 |
|---|---|---|
| 1.0 | 2024-06-15 | 初始版本 |
| 1.1 | 2025-04-20 | 添加 getASCIICode、getASCIIChar |
| 1.2 | 2025-09-02 | 添加 Replace、Index、Email、InetAddress 函数 |
截图
示例应用

参考
属性 Properties
- 文本 Text
- 获取或设置要处理的文本。
- 版本 Version
- 返回扩展的版本号。
- SDK版本 VersionSDK
- 返回当前运行的 Android API 级别。
方法 Methods
字符和大小写检测
- 获取字符 CharAt(索引)
- 返回指定位置的字符(1-based 索引)。
- 返回值:指定位置的字符
- 获取字符Of CharAtOf(源文本, 索引)
- 返回指定文本中指定位置的字符(1-based 索引)。
- 返回值:指定位置的字符
- 是否为数字 IsDigit(字符)
- 检查字符是否为数字(0-9)。
- 返回值:布尔值
- 是否为数字Of IsDigitOf(字符)
- 检查指定字符是否为数字。
- 返回值:布尔值
- 是否为字母 IsLetter(字符)
- 检查字符是否为字母。
- 返回值:布尔值
- 是否为字母Of IsLetterOf(字符)
- 检查指定字符是否为字母。
- 返回值:布尔值
- 是否为字母或数字 IsLetterOrDigit(字符)
- 检查字符是否为字母或数字。
- 返回值:布尔值
- 是否为字母或数字Of IsLetterOrDigitOf(字符)
- 检查指定字符是否为字母或数字。
- 返回值:布尔值
- 是否为空白 IsWhiteSpace(字符)
- 检查字符是否为空白字符(空格、制表符等)。
- 返回值:布尔值
- 是否为空白Of IsWhiteSpaceOf(字符)
- 检查指定字符是否为空白字符。
- 返回值:布尔值
- 交换大小写 SwapCase()
- 交换 Text 属性中所有字符的大小写。
- 返回值:交换大小写后的文本
- 交换大小写This SwapCaseThis()
- 交换 Text 属性中所有字符的大小写,并更新 Text 属性。
- 交换大小写Of SwapCaseOf(源文本)
- 交换指定文本中所有字符的大小写。
- 返回值:交换大小写后的文本
文本检查
- 开始于 StartsWith(前缀, 忽略大小写)
- 检查 Text 属性是否以指定前缀开始。
- 返回值:布尔值
- 开始于Of StartsWithOf(源文本, 前缀, 忽略大小写)
- 检查指定文本是否以指定前缀开始。
- 返回值:布尔值
- 结束于 EndsWith(后缀, 忽略大小写)
- 检查 Text 属性是否以指定后缀结束。
- 返回值:布尔值
- 结束于Of EndsWithOf(源文本, 后缀, 忽略大小写)
- 检查指定文本是否以指定后缀结束。
- 返回值:布尔值
- 是否为空 IsEmpty()
- 检查 Text 属性是否为空。
- 返回值:布尔值
- 是否为空Of IsEmptyOf(源文本)
- 检查指定文本是否为空。
- 返回值:布尔值
- 索引位置 IndexOfThis(片段)
- 返回片段在 Text 属性中首次出现的位置(1-based)。
- 返回值:位置索引,未找到返回 0
- 索引位置Of IndexOf(源文本, 片段)
- 返回片段在指定文本中首次出现的位置(1-based)。
- 返回值:位置索引,未找到返回 0
- 最后索引位置 LastIndexOfThis(片段)
- 返回片段在 Text 属性中最后出现的位置(1-based)。
- 返回值:位置索引,未找到返回 0
- 最后索引位置Of LastIndexOf(源文本, 片段)
- 返回片段在指定文本中最后出现的位置(1-based)。
- 返回值:位置索引,未找到返回 0
文本提取
- 取左边 Left(数量)
- 返回 Text 属性左边指定数量的字符。
- 返回值:提取的文本
- 取左边This LeftThis(数量)
- 将 Text 属性截取为左边指定数量的字符。
- 取左边Of LeftOf(源文本, 数量)
- 返回指定文本左边指定数量的字符。
- 返回值:提取的文本
- 取右边 Right(数量)
- 返回 Text 属性右边指定数量的字符。
- 返回值:提取的文本
- 取右边This RightThis(数量)
- 将 Text 属性截取为右边指定数量的字符。
- 取右边Of RightOf(源文本, 数量)
- 返回指定文本右边指定数量的字符。
- 返回值:提取的文本
- 取中间 Mid(起始位置, 数量)
- 从 Text 属性中提取中间部分(1-based 起始位置)。
- 返回值:提取的文本
- 取中间This MidThis(起始位置, 数量)
- 将 Text 属性截取为中间部分。
- 取中间Of MidOf(源文本, 起始位置, 数量)
- 从指定文本中提取中间部分。
- 返回值:提取的文本
文本修改
- 移除首字符 RemoveFirstChar()
- 移除 Text 属性的第一个字符。
- 返回值:移除后的文本
- 移除首字符This RemoveFirstCharThis()
- 移除 Text 属性的第一个字符并更新 Text。
- 移除首字符Of RemoveFirstCharOf(源文本)
- 移除指定文本的第一个字符。
- 返回值:移除后的文本
- 移除尾字符 RemoveLastChar()
- 移除 Text 属性的最后一个字符。
- 返回值:移除后的文本
- 移除尾字符This RemoveLastCharThis()
- 移除 Text 属性的最后一个字符并更新 Text。
- 移除尾字符Of RemoveLastCharOf(源文本)
- 移除指定文本的最后一个字符。
- 返回值:移除后的文本
文本填充
- 左填充 LeftPad(大小, 填充字符)
- 在 Text 属性左边填充指定字符至指定长度。
- 返回值:填充后的文本
- 左填充This LeftPadThis(大小, 填充字符)
- 在 Text 属性左边填充字符并更新 Text。
- 左填充Of LeftPadOf(源文本, 大小, 填充字符)
- 在指定文本左边填充指定字符。
- 返回值:填充后的文本
- 右填充 RightPad(大小, 填充字符)
- 在 Text 属性右边填充指定字符至指定长度。
- 返回值:填充后的文本
- 右填充This RightPadThis(大小, 填充字符)
- 在 Text 属性右边填充字符并更新 Text。
- 右填充Of RightPadOf(源文本, 大小, 填充字符)
- 在指定文本右边填充指定字符。
- 返回值:填充后的文本
- 居中 Center(大小, 填充字符)
- 将 Text 属性居中,两边用指定字符填充至指定长度。
- 返回值:居中后的文本
- 居中This CenterThis(大小, 填充字符)
- 将 Text 属性居中并更新 Text。
- 居中Of CenterOf(源文本, 大小, 填充字符)
- 将指定文本居中。
- 返回值:居中后的文本
文本缩写
- 缩写 Abbreviate(标记, 最大宽度)
- 将 Text 属性缩写到指定长度,超出部分用标记(如”…“)替换。
- 返回值:缩写后的文本
- 缩写This AbbreviateThis(标记, 最大宽度)
- 缩写 Text 属性并更新 Text。
- 缩写Of AbbreviateOf(源文本, 标记, 最大宽度)
- 将指定文本缩写到指定长度。
- 返回值:缩写后的文本
替换
- 替换首个This ReplaceFirstOfThis(搜索文本, 替换文本)
- 替换 Text 属性中首次出现的搜索文本。
- 替换首个Of ReplaceFirstOf(源文本, 搜索文本, 替换文本)
- 替换指定文本中首次出现的搜索文本。
- 返回值:替换后的文本
- 替换末个This ReplaceLastOfThis(搜索文本, 替换文本)
- 替换 Text 属性中最后出现的搜索文本。
- 替换末个Of ReplaceLastOf(源文本, 搜索文本, 替换文本)
- 替换指定文本中最后出现的搜索文本。
- 返回值:替换后的文本
ASCII 操作
- 获取ASCII码 getASCIICode(源)
- 返回字符的 ASCII 码(0-127)。
- 返回值:ASCII 码,超出范围返回 -1
- 获取ASCII字符 getASCIIChar(码)
- 返回指定 ASCII 码对应的字符。
- 返回值:字符,超出 0-127 范围返回空字符串
验证函数
- 是否为邮箱 isEmailOfThis(文本)
- 验证文本是否为有效的电子邮件地址(使用 Apache Commons Validator)。
- 返回值:布尔值
- 是否为邮箱Of isEmailOf(文本)
- 验证指定文本是否为有效的电子邮件地址。
- 返回值:布尔值
- 是否为IPv4地址 isInet4AddressOfThis(文本)
- 验证文本是否为有效的 IPv4 地址。
- 返回值:布尔值
- 是否为IPv4地址Of isInet4AddressOf(文本)
- 验证指定文本是否为有效的 IPv4 地址。
- 返回值:布尔值
- 是否为IPv6地址 isInet6AddressOfThis(文本)
- 验证文本是否为有效的 IPv6 地址。
- 返回值:布尔值
- 是否为IPv6地址Of isInet6AddressOf(文本)
- 验证指定文本是否为有效的 IPv6 地址。
- 返回值:布尔值
- 是否为IP地址 isInetAddressOfThis(文本)
- 验证文本是否为有效的 IP 地址(IPv4 或 IPv6)。
- 返回值:布尔值
- 是否为IP地址Of isInetAddressOf(文本)
- 验证指定文本是否为有效的 IP 地址。
- 返回值:布尔值
高级功能
- 编辑距离 LevenshteinDistance(左文本, 右文本)
- 计算两个字符串之间的 Levenshtein 距离(编辑距离),用于衡量字符串相似度。
- 返回值:编辑距离(需要的最小编辑操作数)
- 重复 Repeat(文本, 次数)
- 将指定文本重复指定次数。
- 返回值:重复后的文本
使用示例
基本文本处理
当 Screen1.Initialize 时
设置 StringUtils1.Text 为 "Hello World"
当 Button1.Click 时
// 取左边5个字符
设置 Label1.Text 为 调用 StringUtils1.Left(5)
// 结果: "Hello"
// 取右边5个字符
设置 Label2.Text 为 调用 StringUtils1.Right(5)
// 结果: "World"
文本填充
// 左填充到10位
设置 StringUtils1.Text 为 "123"
设置 Label1.Text 为 调用 StringUtils1.LeftPad(10, "0")
// 结果: "0000000123"
// 居中对齐
设置 StringUtils1.Text 为 "Hi"
设置 Label2.Text 为 调用 StringUtils1.Center(10, "*")
// 结果: "****Hi****"
验证邮箱
如果 调用 StringUtils1.isEmailOf("test@example.com") 那么
调用 Notifier1.ShowAlert("有效的邮箱地址")
否则
调用 Notifier1.ShowAlert("无效的邮箱地址")
字符串相似度
设置 distance 为 调用 StringUtils1.LevenshteinDistance("kitten", "sitting")
// 结果: 3 (需要3次编辑操作)
注意事项
-
索引从1开始:与 App Inventor 的习惯一致,所有索引都是 1-based
- 三种函数变体:
- 无后缀版本返回新值,不修改 Text 属性
- “This” 后缀版本会修改 Text 属性
- “Of” 后缀版本对传入参数操作,不使用 Text 属性
-
ASCII 范围:getASCIICode 和 getASCIIChar 仅支持 0-127 范围内的标准 ASCII 字符
- 邮箱验证:使用 Apache Commons Validator,遵循 RFC 822 标准
原文链接
原版文档:Ullis Roboter Seite - AI2 StringUtils
作者:Urs (Ullis Roboter Seite)
扫码添加客服咨询