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 函数;当前随文档下载的 .aix 仍为 1.1,暂未包含这些成员

截图

示例应用

示例应用截图

参考

属性 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(文本, 次数)
将指定文本重复指定次数。
  • 返回值:重复后的文本

使用示例

基本文本处理

when Screen1.Initialize() {
  UrsAI2StringUtils1.Text = "Hello World"
}

when 按钮1.Click() {
  // 取左边 5 个字符
  标签1.Text = UrsAI2StringUtils1.Left(5)
  // 结果:"Hello"

  // 取右边 5 个字符
  标签2.Text = UrsAI2StringUtils1.Right(5)
  // 结果:"World"
}

文本填充

when Screen1.Initialize() {
  // 左填充到 10 位
  UrsAI2StringUtils1.Text = "123"
  标签1.Text = UrsAI2StringUtils1.LeftPad(10, "0")
  // 结果:"0000000123"

  // 居中对齐
  UrsAI2StringUtils1.Text = "Hi"
  标签2.Text = UrsAI2StringUtils1.Center(10, "*")
  // 结果:"****Hi****"
}

验证邮箱

原作者网页的 1.2 版本列出了 isEmailOf(Text)isEmailOfThis(Text),但当前随文档下载的 de.ullisroboterseite.ursai2stringutils.aix 版本为 1.1,components.jsonfunctions.txt 中都没有这两个成员。因此这里不放入邮箱校验积木,避免读者复制后得到不存在的块;待作者发布 包含该方法的新版 .aix 后再补充预览。

当前包可直接验证文本是否为空:

when 按钮1.Click() {
  if UrsAI2StringUtils1.IsEmptyOf(文本输入框1.Text) {
    对话框1.ShowAlert("请输入邮箱地址")
  } else {
    对话框1.ShowAlert("已填写邮箱地址;邮箱格式请在新版扩展中用 isEmailOf 校验")
  }
}

字符串相似度

when Screen1.Initialize() {
  标签1.Text = UrsAI2StringUtils1.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)

版权信息

  • 原作者:Urs(Ullis Roboter Seite)
  • 原始网址:https://ullisroboterseite.de/android-AI2-StringUtils.html

本文档为原文的中文翻译整理,版权归原作者所有。

文档反馈