StringUtils 字符串工具扩展:强大的文本处理工具集

« 返回首页

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示例文件:

StringUtilsTest.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. 索引从1开始:与 App Inventor 的习惯一致,所有索引都是 1-based

  2. 三种函数变体
    • 无后缀版本返回新值,不修改 Text 属性
    • “This” 后缀版本会修改 Text 属性
    • “Of” 后缀版本对传入参数操作,不使用 Text 属性
  3. ASCII 范围:getASCIICode 和 getASCIIChar 仅支持 0-127 范围内的标准 ASCII 字符

  4. 邮箱验证:使用 Apache Commons Validator,遵循 RFC 822 标准

原文链接

原版文档:Ullis Roboter Seite - AI2 StringUtils

作者:Urs (Ullis Roboter Seite)

文档反馈