前端(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)函数_储存类—— 配合取文本长度做数据校验后存储 - 文档
轻语言网站:变量与数组与对象的定义—— 变量声明与基础语法