|
本帖最后由 weilai 于 2024-11-8 17:30 编辑
<火山程序 类型 = "通常" 版本 = 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 + 左长度
到循环尾
}
}
}
返回 (返回值)
}
|
|