weilai
发表于 2024-11-8 17:26:29
本帖最后由 weilai 于 2024-11-8 17:30 编辑
weilai 发表于 2024-11-8 10:45
主要是没用过正则,要是不用正则的话,取起来感觉简单<火山程序 类型 = "通常" 版本 = 1 />
方法 非正则取中间文本 <公开 类型 = 文本数组类>
参数 原文本 <类型 = 文本型>
参数 左文本 <类型 = 文本型>
参数 右文本 <类型 = 文本型>
{
变量 长度 <类型 = 整数>
变量 左长度 <类型 = 整数>
变量 右长度 <类型 = 整数>
变量 左首字符 <类型 = 字符>
变量 右首字符 <类型 = 字符>
变量 i <类型 = 整数 值 = 0>
变量 左已匹配 <类型 = 整数 值 = -1>
变量 左右文本是否相等 <类型 = 逻辑型 值 = 假>
变量 返回值 <类型 = 文本数组类>
长度 = 取文本长度 (原文本)
左长度 = 取文本长度 (左文本)
右长度 = 取文本长度 (右文本)
如果 (长度 < 1 || 左长度 < 1 || 右长度 < 1)//此处没有处理左右文本为空文本的情况
{
返回(返回值)
}
左首字符 = 取文本字符 (左文本, 0)
右首字符 = 取文本字符 (右文本, 0)
如果 (左文本 == 右文本)
{
左右文本是否相等 = 真
}
i = -1
判断循环 (i < 长度)
{
i = i + 1
判断循环 (i < 长度 && 取文本字符 (原文本, i) != 左首字符 && 取文本字符 (原文本, i) != 右首字符)
{
i = i + 1
}
如果 (i >= 长度)
{
返回 (返回值)
}
变量 临时 <类型 = 整数>
变量 j <类型 = 整数>
如果 (取文本字符 (原文本, i) == 右首字符)
{
如果 (左已匹配 > 0)// 右已经匹配匹配左边
{
临时 = i
循环 (1, 右长度, j)
{
临时 = 临时 + 1
如果 (临时 > 长度)
{
返回 (返回值)
}
如果 (取文本字符 (原文本, 临时) != 取文本字符 (右文本, j))
{
跳出循环
}
}
如果 (j == 右长度)// 匹配成功
{
返回值.添加成员 (取子文本 (原文本, 左已匹配 + 左长度, i - 左已匹配 - 左长度))
如果 (左右文本是否相等 == 真)//这里处理如果左右文本相等的情况
{
左已匹配 = i
}
i = i + 右长度
到循环尾
}
}
}
如果 (取文本字符 (原文本, i) == 左首字符)
{
临时 = i
循环 (1, 左长度, j)
{
临时 = 临时 + 1
如果 (临时 >= 长度)
{
返回 (返回值)
}
如果 (取文本字符 (原文本, 临时) != 取文本字符 (左文本, j))
{
跳出循环
}
}
如果 (j == 左长度)// 匹配成功
{
左已匹配 = i
i = i + 左长度
到循环尾
}
}
}
返回 (返回值)
}
兵三进一
发表于 2024-11-9 12:04:53
反正闲也是闲着,不如直接动手了
Yes
发表于 2024-11-9 13:42:06
兵三进一 发表于 2024-11-9 12:04
反正闲也是闲着,不如直接动手了
高手就是不一样,代码真简练。
请问"\r\n",这是是代表什么?
兵三进一
发表于 2024-11-9 14:24:31
Yes 发表于 2024-11-9 13:42
高手就是不一样,代码真简练。
请问"\r\n",这是是代表什么?
"\r\n"就是易语言中的 #换行符
在这个网页源码中其实不用替换,这只是我个人的习惯操作!
Yes
发表于 2024-11-9 14:51:21
学到了谢谢!
weilai
发表于 2024-11-9 17:48:46
非正则其实也可以写的很短的
weilai
发表于 2024-11-9 17:50:36
本帖最后由 weilai 于 2024-11-10 11:55 编辑
无
weilai
发表于 2024-11-9 18:27:11
weilai 发表于 2024-11-9 17:50
方法 非正则取中间文本1
参数 原文本
参数 左文本
修改了下这样效果就一样了:噜阿噜
weilai
发表于 2024-11-9 19:59:52
本帖最后由 weilai 于 2024-11-10 11:56 编辑
无
Yes
发表于 2024-11-11 15:59:18
weilai 发表于 2024-11-9 18:27
修改了下这样效果就一样了:噜阿噜
不用正则也可以解决的比较完美,就是代码繁琐了一些。