前端(JavaScript)函数_字符串操作

文档概述

轻语言网站开发中的字符串相关操作函数、用于处理文本和字符串内容,包含获取随机字符串、判断文本是否包含目标文本、取文本长度、翻转文本、替换文本内容等功能,常用于在编码中处理字符串、文本内容相关场景。

  • 文本查找寻找文本(正序)、倒找文本(逆序) 返回索引;取包含文本 返回布尔值;未找到均返回 -1
  • 文本截取取文本左边/取文本右边/取文本中间(按位置长度)、取指定文本左边/取指定文本右边/取指定文本中间(按标记文本)、取字符(单字符)
  • 文本替换子文本替换(替换首个)、子文本替换全部(替换全部)、格式化文本({0}占位符)
  • 文本清洗删首尾空/删首空/删尾空/删全部空(去空白)、到全角/到半角(全半角转换)
  • 文本分析取文本长度(字符数)、取文本字节长度(UTF-8字节数)、取文本行数翻转文本到小写/到大写取相等

💡 字符长度与字节长度取文本长度 返回字符数(中文1字=1),取文本字节长度 返回 UTF-8 字节数(中文1字=3字节)。数据库字段长度限制、网络传输长度限制通常按字节计算,验证时需用 取文本字节长度

函数:为空(值 为 泛型)

获取并判断指定文本变量或字符串、或对象是否为空值。

' 检查字符串是否为空
变量 文本1 = ""
变量 文本2 = "  "
变量 文本3 = "hello"
调试输出(为空(文本1))  ' 真
调试输出(为空(文本2))  ' 真(纯空格也算空)
调试输出(为空(文本3))  ' 假
' 检查对象是否为空
' 注:轻语言的空值关键字为 空,等价于原生 JS 的 null
变量 空对象 = 空
调试输出(为空(空对象))  ' 真

函数:取随机字符串(长度 为 整数型)

取出指定位数长度的随机字符串(由小写字母加数字组成),注意:长度必须大于0。

' 生成8位随机字符串(常用于验证码、临时密码)
变量 随机串 = 取随机字符串(8)
调试输出("随机字符串: " + 随机串)  ' 如:a3f9x2k1
' 生成16位随机字符串(用于token)
变量 令牌 = 取随机字符串(16)
调试输出("令牌: " + 令牌)
' 生成4位验证码
变量 验证码 = 取随机字符串(4)
调试输出("验证码: " + 验证码)

函数:取包含文本(源文本 为 文本型,目标文本 为 文本型)

获取指定源文本中是否包含目标文本;如果包含则返回真、否则返回假。

' 检查邮箱是否包含@符号
变量 邮箱 = "user@example.com"
如果(取包含文本(邮箱, "@"))
	调试输出("邮箱格式包含@符号")
否则
	调试输出("邮箱格式不正确")
结束 如果
' 检查文本中是否包含敏感词
变量 评论内容 = "这个产品非常好用"
如果(取包含文本(评论内容, "垃圾"))
	调试输出("评论包含敏感词")
否则
	调试输出("评论内容正常")
结束 如果

函数:取文本长度(内容 为 文本型)

获取文本字符数量,例如:一段文本由5个汉字组成,则返回5。

' 获取中英文混合文本的字符数
变量 文本 = "Hello世界"
调试输出("字符数: " + 取文本长度(文本))  ' 7
' 验证用户输入长度
变量 用户名 = "张三"
如果(取文本长度(用户名) < 2)
	弹出提示("用户名至少需要2个字符")
结束 如果
' 获取空文本的长度
调试输出(取文本长度(""))  ' 0
' 注:传入 空(轻语言空值关键字,等价于原生 JS 的 null)时返回 0
调试输出(取文本长度(空))  ' 0

函数:取文本字节长度(文本内容)

获取文本字节长度,默认使用UTF8编码计算,保证跨设备一致性。

' 计算中英文混合文本的字节长度(UTF-8编码下中文占3字节)
变量 英文 = "abc"
变量 中文 = "你好"
调试输出("英文字节: " + 取文本字节长度(英文))  ' 3
调试输出("中文字节: " + 取文本字节长度(中文))  ' 6
' 验证数据库字段长度限制
变量 用户输入 = "这是用户输入的内容"
如果(取文本字节长度(用户输入) > 255)
	弹出提示("输入内容超出255字节限制")
结束 如果

函数:翻转文本(文本内容 为 文本型)

将文本从右到左反转后返回。

' 反转字符串
变量 原文本 = "Hello World"
变量 反转后 = 翻转文本(原文本)
调试输出(反转后)  ' dlroW olleH
' 反转中文文本
变量 中文 = "你好世界"
调试输出(翻转文本(中文))  ' 界世好你
' 判断回文
变量 词 = "上海自来水来自海上"
如果(词 == 翻转文本(词))
	调试输出("是回文")
结束 如果

函数:寻找文本(欲被搜寻文本 为 文本型,欲寻找文本 为 文本型,开始位置 为 整数型)

从指定文本中寻找欲寻找的文本,可以设定起始位置,如果未找到返回-1;如果找到后返回从左至右以0为开始的索引位置。

' 查找关键词在文本中的位置
变量 文本 = "Hello World, Hello JavaScript"
变量 位置 = 寻找文本(文本, "Hello")
调试输出("首次出现位置: " + 位置)  ' 0
' 从指定位置开始查找
变量 位置2 = 寻找文本(文本, "Hello", 1)
调试输出("第二次出现位置: " + 位置2)  ' 13
' 查找不存在的内容
变量 位置3 = 寻找文本(文本, "Python")
调试输出("查找结果: " + 位置3)  ' -1

函数:倒找文本(欲被搜寻文本 为 文本型,欲寻找文本 为 文本型,开始位置 为 整数型)

在指定文本中从右到左寻找文本;返回找到的文本的位置;如果未找到返回-1、注意参数三开始位置是指从右向左的方向;例如:文本总长度为10、要从右向左找开始位置则为10或大于文本长度即可。

' 从右向左查找关键词最后出现的位置
变量 文本 = "apple banana apple orange"
变量 位置 = 倒找文本(文本, "apple")
调试输出("最后出现位置: " + 位置)  ' 13
' 查找文件扩展名(最后一个.的位置)
变量 文件名 = "archive.tar.gz"
变量 点位置 = 倒找文本(文件名, ".")
变量 扩展名 = 取文本右边(文件名, 取文本长度(文件名) - 点位置 - 1)
调试输出("扩展名: " + 扩展名)  ' gz

函数:到小写(文本内容 为 文本型)

将字符串的字母全部转成小写;返回转换后的字符串。

' 将大写字母转为小写
变量 文本 = "HELLO World"
调试输出(到小写(文本))  ' hello world
' 统一用户输入格式用于比较
变量 用户输入 = "YES"
如果(到小写(用户输入) == "yes")
	调试输出("用户确认了操作")
结束 如果
' 处理邮箱地址
变量 邮箱 = "User@Example.COM"
调试输出(到小写(邮箱))  ' user@example.com

函数:取相等(文本1 为 文本型,文本2 为 文本型)

获取并判断当前两个字符串或文本变量是否相等。

' 比较两个字符串是否相等
变量 密码1 = "123456"
变量 密码2 = "123456"
变量 密码3 = "654321"
调试输出(取相等(密码1, 密码2))  ' 真
调试输出(取相等(密码1, 密码3))  ' 假
' 验证码校验
变量 正确验证码 = "ABCD"
变量 用户输入 = "ABCD"
如果(取相等(正确验证码, 用户输入))
	弹出提示("验证码正确")
否则
	弹出提示("验证码错误")
结束 如果

函数:到大写(文本内容 为 文本型)

将字符串的字母全部转成大写;返回转换后的字符串。

' 将小写字母转为大写
变量 文本 = "hello world"
调试输出(到大写(文本))  ' HELLO WORLD
' 统一代码格式
变量 国家代码 = "cn"
调试输出(到大写(国家代码))  ' CN
' 生成订单编号
变量 订单前缀 = "ord"
变量 订单号 = 到大写(订单前缀) + "-" + 取随机字符串(8)
调试输出("订单号: " + 订单号)  ' ORD-a3f9x2k1

函数:取文本左边(文本内容 为 文本型,长度 为 整数型)

从字符串左边开始;取出指定长度的字符;返回取出的字符串。

' 取出文本前几个字符
变量 文本 = "Hello World"
调试输出(取文本左边(文本, 5))  ' Hello
' 截取姓名的姓氏(中文)
变量 姓名 = "张三丰"
调试输出("姓氏: " + 取文本左边(姓名, 1))  ' 张
' 截取日期前缀
变量 日期时间 = "2024-01-15 10:30:00"
变量 日期 = 取文本左边(日期时间, 10)
调试输出("日期: " + 日期)  ' 2024-01-15

函数:取文本右边(文本内容 为 文本型,长度 为 整数型)

从字符串右边开始;取出指定长度的字符;返回取出的字符串。

' 取出文本最后几个字符
变量 文本 = "Hello World"
调试输出(取文本右边(文本, 5))  ' World
' 获取文件扩展名
变量 文件名 = "photo.jpg"
变量 扩展名 = 取文本右边(文件名, 3)
调试输出("扩展名: " + 扩展名)  ' jpg
' 获取手机号后四位
变量 手机号 = "13812345678"
变量 后四位 = 取文本右边(手机号, 4)
调试输出("后四位: " + 后四位)  ' 5678

函数:取文本中间(待操作文本 为 文本型,开始位置 为 整数型,结束位置 为 整数型)

取出指定开始,结束位置的文本。

' 从指定位置截取文本片段
变量 文本 = "Hello World"
调试输出(取文本中间(文本, 0, 5))  ' Hello
调试输出(取文本中间(文本, 6, 11))  ' World
' 提取身份证中的出生日期
变量 身份证 = "110105199001011234"
变量 出生日期 = 取文本中间(身份证, 6, 14)
调试输出("出生日期: " + 出生日期)  ' 19900101
' 从URL中提取域名部分
变量 网址 = "https://www.example.com/path"
变量 开始 = 寻找文本(网址, "://") + 3
变量 结束 = 寻找文本(网址, "/", 开始)
调试输出("域名: " + 取文本中间(网址, 开始, 结束))  ' www.example.com

函数:取指定文本右边(文本内容 为 文本型,左边文本 为 文本型)

取出指定文本的右边;例如:取指定文本右边("123456","4");结果为56。

' 取出指定标记后的内容
变量 文本 = "姓名:张三"
调试输出(取指定文本右边(文本, ":"))  ' 张三
' 提取URL参数值
变量 网址 = "https://example.com?id=12345"
变量 参数值 = 取指定文本右边(网址, "id=")
调试输出("ID: " + 参数值)  ' 12345
' 提取文件路径中的文件名
变量 路径 = "/home/user/document.txt"
变量 文件名 = 取指定文本右边(路径, "/")
调试输出("文件名: " + 文件名)  ' document.txt

函数:取指定文本左边(文本内容 为 文本型,右边文本 为 文本型)

取出指定文本的左边;例如:取指定文本左边("123456","4");结果为123。

' 取出指定标记前的内容
变量 文本 = "张三:男"
调试输出(取指定文本左边(文本, ":"))  ' 张三
' 提取文件名(不含扩展名)
变量 文件名 = "photo.jpg"
变量 名称 = 取指定文本左边(文件名, ".")
调试输出("文件名: " + 名称)  ' photo
' 提取邮箱用户名部分
变量 邮箱 = "user@example.com"
变量 用户名 = 取指定文本左边(邮箱, "@")
调试输出("用户名: " + 用户名)  ' user

函数:取指定文本中间(内容 为 文本型,左侧文本 为 文本型,右侧文本 为 文本型)

取出字符串中指定的文本的中间字符串;例如:取指定文本中间("123456","4","6") 结果为5。

' 提取两个标记之间的内容
变量 HTML = "<title>我的网页</title>"
变量 标题 = 取指定文本中间(HTML, "<title>", "</title>")
调试输出("标题: " + 标题)  ' 我的网页
' 提取括号中的内容
变量 文本 = "函数(参数1,参数2)结束"
变量 参数 = 取指定文本中间(文本, "(", ")")
调试输出("参数: " + 参数)  ' 参数1,参数2
' 提取JSON字符串中的值
变量 JSON文本 = "{\"name\":\"张三\",\"age\":25}"
变量 姓名 = 取指定文本中间(JSON文本, "\"name\":\"", "\"")
调试输出("姓名: " + 姓名)  ' 张三

函数:取指定文本中间批量(文本内容 为 文本型,左边文本 为 文本型,右边文本 为 文本型)

取出字符串中;所有的指定文本的中间文本;并返回数组,例如:见文本操作例程。

' 批量提取HTML标签中的内容
变量 HTML = "<li>苹果</li><li>香蕉</li><li>橙子</li>"
变量 水果列表 = 取指定文本中间批量(HTML, "<li>", "</li>")
调试输出("水果数量: " + 取数组成员数(水果列表))  ' 3
调试输出("第一个: " + 水果列表[0])  ' 苹果
' 批量提取所有链接地址
变量 内容 = "链接:<a href=\"url1\">链接1</a> 和 <a href=\"url2\">链接2</a>"
变量 链接列表 = 取指定文本中间批量(内容, "href=\"", "\"")
变量循环(i = 0, 取数组成员数(链接列表), 1)
	调试输出("链接: " + 链接列表[i])
结束循环

函数:删首尾空(文本内容 为 文本型)

删除字符串的首尾空白字符(包括空格、制表符、换行、回车以及其它 Unicode 空白字符),返回删除后的文本。

' 清理用户输入的首尾空格
变量 用户输入 = "  Hello World  "
调试输出(删首尾空(用户输入))  ' Hello World
' 清理含换行符的文本
变量 多行文本 = "\n  内容  \r\n"
调试输出(删首尾空(多行文本))  ' 内容
' 表单数据清洗
变量 用户名 = "  zhangsan  "
如果(删首尾空(用户名) == "")
	弹出提示("用户名不能为空")
结束 如果

函数:删首空(文本内容 为 文本型)

删除字符串开始位置的空格。

' 仅删除开头的空格,保留结尾空格
变量 文本 = "  Hello World  "
变量 结果 = 删首空(文本)
调试输出("[" + 结果 + "]")  ' [Hello World  ]
' 处理缩进文本
变量 代码 = "    function test() {"
调试输出(删首空(代码))  ' function test() {

函数:删尾空(文本内容 为 文本型)

删除字符串结尾的空格。

' 仅删除结尾的空格,保留开头空格
变量 文本 = "  Hello World  "
变量 结果 = 删尾空(文本)
调试输出("[" + 结果 + "]")  ' [  Hello World]
' 清理文件路径末尾的空格
变量 路径 = "/home/user/   "
调试输出(删尾空(路径))  ' /home/user/

函数:子文本替换(待操作文本 为 文本型,欲替换文本 为 文本型,用作替换的文本 为 文本型)

将文本中指定字符串替换成另一个字符串;返回替换后的字符串;注意:该替换只会替换寻找到的第一个字符串;如果需要替换全部可使用“子文本替换全部”。

' 替换第一个匹配的文本
变量 文本 = "今天是星期一,明天也是星期一"
变量 结果 = 子文本替换(文本, "星期一", "星期二")
调试输出(结果)  ' 今天是星期二,明天也是星期一
' 替换敏感词
变量 评论 = "这个垃圾产品太垃圾了"
变量 过滤后 = 子文本替换(评论, "垃圾", "***")
调试输出(过滤后)  ' 这个***产品太垃圾了
' 替换占位符
变量 模板 = "欢迎您,{name}!"
变量 内容 = 子文本替换(模板, "{name}", "张三")
调试输出(内容)  ' 欢迎您,张三!

函数:子文本替换全部(待操作文本 为 文本型,欲替换文本 为 文本型,用作替换的文本 为 文本型)

文本中指定字符串全部替换成另一个字符串;返回替换后的字符串。

' 替换所有匹配的文本
变量 文本 = "今天是星期一,明天也是星期一"
变量 结果 = 子文本替换全部(文本, "星期一", "星期二")
调试输出(结果)  ' 今天是星期二,明天也是星期二
' 全局过滤敏感词
变量 评论 = "这个垃圾产品太垃圾了"
变量 过滤后 = 子文本替换全部(评论, "垃圾", "***")
调试输出(过滤后)  ' 这个***产品太***了
' 替换所有空格为下划线
变量 文件名 = "my document file.txt"
变量 新文件名 = 子文本替换全部(文件名, " ", "_")
调试输出(新文件名)  ' my_document_file.txt

函数:分割文本(待操作文本 为 文本型,分割符 为 文本型,启用正则模式 为 逻辑型)

按指定分隔符分割文本字符串;返回分割后的文本数组,参数三:启用正则模式 可省略,如果设置为真,则分割符将以正则形式作为分隔符,此时:“.”,“|”等符号将以正则方式参与文本的分割。

' 按逗号分割文本
变量 文本 = "苹果,香蕉,橙子,葡萄"
变量 水果数组 = 分割文本(文本, ",")
调试输出("数量: " + 取数组成员数(水果数组))  ' 4
调试输出("第一个: " + 水果数组[0])  ' 苹果
' 使用正则模式分割(按任意空白字符分割)
变量 句子 = "Hello   World   JavaScript"
变量 单词 = 分割文本(句子, "\\s+", 真)
调试输出("单词数: " + 取数组成员数(单词))  ' 3
' 分割CSV数据
变量 CSV行 = "张三,25,男,北京"
变量 字段 = 分割文本(CSV行, ",")
调试输出("姓名: " + 字段[0] + ",年龄: " + 字段[1])

函数:格式化文本(模板内容 为 文本型,值 为 文本型)

将指定字符串与值通过占位符格式化显示、例如:格式化文本("今天星期{0}、一起去看花!",1)、执行该函数后、将会返回:今天星期1、一起去看花!注意:如果字符串中含有单引号、单引号必须写为两个、另一个单引号作为转义功能;例如在处理数据库命令时:"name=‘’{0}‘’,age=23" ;原本的单引号需使用两个。

' 使用占位符格式化文本
变量 结果1 = 格式化文本("今天星期{0}、一起去看花!", 1)
调试输出(结果1)  ' 今天星期1、一起去看花!
' 格式化欢迎信息
变量 用户名 = "张三"
变量 结果2 = 格式化文本("欢迎您,{0}!您是第{1}位访客。", 用户名, 100)
调试输出(结果2)  ' 欢迎您,张三!您是第100位访客。
' 格式化日期信息
变量 年 = 2024
变量 月 = 1
变量 日 = 15
变量 日期 = 格式化文本("{0}年{1}月{2}日", 年, 月, 日)
调试输出(日期)  ' 2024年1月15日

函数:取字符(文本内容 为 文本型,位置 为 整数型)

获取指定文本内容中指定位置处的单个字符,位置从0开始。

' 获取指定位置的单个字符
变量 文本 = "Hello"
调试输出(取字符(文本, 0))  ' H
调试输出(取字符(文本, 1))  ' e
调试输出(取字符(文本, 4))  ' o
' 遍历字符串中的每个字符
变量 中文 = "你好世界"
变量循环(i = 0, 取文本长度(中文), 1)
	调试输出("第" + (i+1) + "个字符: " + 取字符(中文, i))
结束循环
' 获取身份证最后一位(校验码)
变量 身份证 = "110105199001011234"
变量 校验码 = 取字符(身份证, 取文本长度(身份证) - 1)
调试输出("校验码: " + 校验码)  ' 4

函数:删全部空(待操作文本)

删除字符串中所有的空格。代码示例:变量 结果文本 = 删全部空(待操作文本)

' 格式化手机号码
变量 格式化号码 = "138 1234 5678"
变量 纯号码 = 删全部空(格式化号码)
调试输出("纯号码: " + 纯号码)  ' 13812345678
' 处理身份证号码输入
变量 身份证输入 = "110 101 1990 0101 1234"
变量 纯身份证 = 删全部空(身份证输入)
如果(取文本长度(纯身份证) == 18)
	调试输出("身份证号码格式正确: " + 纯身份证)
结束 如果

函数:取文本行数(待操作文本)

计算字符串中有多少行。代码示例:变量 行数 = 取文本行数(待操作文本)

' 计算多行文本的行数
变量 多行文本 = "第一行\n第二行\n第三行\n第四行"
变量 行数 = 取文本行数(多行文本)
调试输出("文本共有 " + 行数 + " 行")  ' 4
' 处理用户评论
变量 用户评论 = "这是一条评论\n这是第二行\n这是第三行"
变量 评论行数 = 取文本行数(用户评论)
如果(评论行数 > 10)
	调试输出("评论过长,请精简到10行以内")
否则
	调试输出("评论符合要求,共 " + 评论行数 + " 行")
结束 如果

函数:到全角(待操作文本)

将指定字符串内容从半角转成全角,返回转换后的全角内容。

' 将半角字母数字转为全角
变量 半角文本 = "ABC123"
变量 全角文本 = 到全角(半角文本)
调试输出(全角文本)  ' ABC123
' 将半角标点转为全角
变量 标点 = "Hello, World!"
调试输出(到全角(标点))  ' Hello, World!
' 用于中文排版对齐
变量 数据 = "价格:100元"
调试输出(到全角(数据))  ' 价格:100元

函数:到半角(待操作文本)

将指定字符串内容从全角转成半角,返回转换后的半角内容。

' 将全角字母数字转为半角
变量 全角文本 = "ABC123"
变量 半角文本 = 到半角(全角文本)
调试输出(半角文本)  ' ABC123
' 将全角标点转为半角
变量 标点 = "Hello,World!"
调试输出(到半角(标点))  ' Hello,World!
' 清理用户输入的全角字符
变量 用户输入 = "13812345678"
变量 标准手机号 = 到半角(用户输入)
调试输出("手机号: " + 标准手机号)  ' 13812345678

学习要点

知识点代码示例说明
空值判断为空(文本)空字符串、纯空格、(null)均返回真;用于表单非空校验
空值关键字变量 空对象 = 空轻语言空值关键字为 ,等价于原生 JS 的 null
字符数 vs 字节数取文本长度("你好") →2 / 取文本字节长度("你好") →6字符数按字符计算,字节数按 UTF-8 编码(中文3字节);数据库长度限制按字节
查找方向寻找文本 / 倒找文本正序从头找、逆序从尾找,均返回索引,未找到返回 -1
包含判断取包含文本(文本, "@")返回 真/假;不返回位置,只判断是否包含
位置截取 vs 标记截取取文本左边(文本, 5) / 取指定文本左边(文本, ":")前者按长度位置截取,后者按标记文本定位截取;标记版适合提取键值对
替换范围子文本替换 / 子文本替换全部前者只替换首个匹配,后者替换全部;注意区别避免漏替换
占位符格式化格式化文本("欢迎{0}!", 用户名){0}{1} 作占位符,按参数顺序替换;单引号需写两个转义
空白处理删首尾空 / 删全部空前者只去首尾空白,后者删除所有空格;表单输入清洗通常用 删首尾空
大小写转换到小写(文本) / 到大写(文本)大小写不敏感比较时统一转为小写再比较
全半角转换到全角 / 到半角全角用于中文排版对齐,半角用于数据存储、标准输入;手机号、身份证需转半角

相关文档

  • 文档前端(JavaScript)函数_正则表达类 —— 正则匹配正则替换 等高级文本处理函数
  • 文档前端(JavaScript)函数_数据转换类 —— 到文本到大写URL编码 等转换函数
  • 文档前端(JavaScript)函数_数组操作 —— 分割文本 返回数组的遍历处理
  • 文档前端(JavaScript)函数_储存类 —— 配合 取文本长度 做数据校验后存储
  • 文档轻语言网站:变量与数组与对象的定义 —— 变量声明与基础语法