精易论坛

标题: 文本相连和不相连求助 [打印本页]

作者: csc123    时间: 2025-2-14 18:49
标题: 文本相连和不相连求助
一段文本:    "1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,"想知道这段文本中1相连的次数和1不相连的次数

作者: 大漠小鸟    时间: 2025-2-14 18:49
  
文本相连和不相连求助 (“1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0”, 0, 0)
子程序名返回值类型公开备 注
文本相连和不相连求助  
参数名类 型参考可空数组备 注
文本文本型
相连数整数型
不相连数整数型
变量名类 型静态数组备 注
分割的文本文本型0
i整数型 
连续赋值 (0, 相连数, 不相连数)
分割的文本 = 分割文本 (子文本替换 (文本, “,”, , , , ), “0”, )
计次循环首 (取数组成员数 (分割的文本), i)
i = 取文本长度 (分割的文本 [i])
判断 (i > 1)
相连数 = 相连数 + 1
判断 (i = 1)
不相连数 = 不相连数 + 1



计次循环尾 ()
调试输出 (相连数, 不相连数)


i支持库列表   支持库注释   
spec特殊功能支持库


作者: 高先生    时间: 2025-2-14 19:01
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
文本文本型 
text文本型0
x整数型 
开始连续逻辑型 
次数整数型 
不连续逻辑型 
不连次数整数型 
文本 = “1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,”
text = 分割文本 (文本, “,”, )
计次循环首 (取数组成员数 (text), x)
如果真 (text [x]“0”)
开始连续 = 假
不连次数 = 不连次数 + 1
如果真 (开始连续 = )
次数 = 次数 + 1
如果真 (text [x]“1”)
开始连续 = 真
不连续 = 真

计次循环尾 ()
调试输出 (次数)
调试输出 (不连次数)


i支持库列表   支持库注释   
spec特殊功能支持库

补充内容 (2025-2-14 19:05):
如果不只有1和0 就改 上面的text[x]<>0 不等于0
作者: csc123    时间: 2025-2-14 19:17
高先生 发表于 2025-2-14 19:01
[e=2].版本 2
.支持库 spec

感谢回复,但这不是我相要的
文本 = “1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,”
这文本中的  1,1和1,1,1,1,这些是算是连1次,不是连几次
肉眼看:结果是相连 6 次  不连 2次

补充内容 (2025-2-14 19:18):
这数据只是小部分而已,只有0和1,没其它数字了
作者: 算法艺术家    时间: 2025-2-14 19:18
  
子程序名返回值类型公开备 注
aaa  
变量名类 型静态数组备 注
文本文本型 
分割1文本型0
分割2文本型0
文本 = “1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,”
分割1 = 分割文本 (文本, “1,1”, )
分割2 = 分割文本 (文本, “0,”, )
调试输出 (取数组成员数 (分割1))  ' 连续次数
调试输出 (取数组成员数 (分割2))  ' 不连续次数



i支持库列表   支持库注释   
spec特殊功能支持库


作者: csc123    时间: 2025-2-14 19:20
算法艺术家 发表于 2025-2-14 19:18
[e=0].版本 2
.支持库 spec

感谢回复,结果和上面那位大佬相同,可能是我需求没表达清楚,抱歉
作者: 高先生    时间: 2025-2-14 19:32
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
文本文本型 
text文本型0
x整数型 
开始连续逻辑型 
次数整数型 
不连续逻辑型 
不连次数整数型 
tsxt整数型 
加过逻辑型 
文本 = “1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1”
text = 分割文本 (文本, “,”, )
开始连续 = 假
计次循环首 (取数组成员数 (text), x)
如果真 (开始连续 = )
如果真 (加过 ≠ )
如果真 (text [x]“1”)
次数 = 次数 + 1
加过 = 真

如果真 (text [x]“0”)
不连次数 = 不连次数 + 1
开始连续 = 假
加过 = 假

如果真 (text [x]“1”)
开始连续 = 真

计次循环尾 ()
调试输出 (次数)
调试输出 (不连次数)


i支持库列表   支持库注释   
spec特殊功能支持库

作者: 洋滨    时间: 2025-2-14 19:34
  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
文本文本型 
text文本型0
x整数型 
相连中逻辑型 
相连次数整数型 
len整数型 
文本 = “1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,”
text = 分割文本 (文本, “,”, )
len = 取数组成员数 (text)
计次循环首 (len, x)
如果真 (x = len)
跳出循环 ()

判断 (text [x + 1] = text [x] text [x]“1”)
如果真 (相连中 = )
相连次数 = 相连次数 + 1
调试输出 (x)
相连中 = 真



相连中 = 假

计次循环尾 ()
调试输出 (“相连次数”, 相连次数)


i支持库列表   支持库注释   
spec特殊功能支持库


作者: aiky123    时间: 2025-2-14 20:10
正则匹配  (1,){2,}  匹配数量就是连续1的连续数量

匹配不连续   (1,){2,}(0,)+   不清楚你不相连次数具体指什么
作者: wangood    时间: 2025-2-14 20:16
.版本 2
.支持库 spec

.子程序 __启动窗口_创建完毕
.局部变量 文本, 文本型
.局部变量 text, 文本型, , "0"
.局部变量 x, 整数型
.局部变量 连续, 逻辑型
.局部变量 相连次数, 整数型
.局部变量 不连次数, 整数型
.局部变量 当前字符, 文本型

文本 = "1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0"
text = 分割文本 (文本, ",", )

连续 = 假
相连次数 = 0
不连次数 = 0

.计次循环首 (取数组成员数 (text), x)
    当前字符 = text[x]
   
    .如果 (当前字符 = "1")
        .如果 (连续 = 假)
            相连次数 = 相连次数 + 1
        连续 = 真
    .否则
        连续 = 假
        不连次数 = 不连次数 + 1
    .如果结束

.计次循环尾 ()

调试输出 ("相连次数: ", 相连次数)
调试输出 ("不连次数: ", 不连次数)


===========================================
对于输入文本 "1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0",程序会输出:
相连次数: 6
不连次数: 11
作者: 鹏书    时间: 2025-2-14 20:20
csc123 发表于 2025-2-14 19:20
感谢回复,结果和上面那位大佬相同,可能是我需求没表达清楚,抱歉

相连6次可以理解 不连为什么会是2次?
作者: haoren1212    时间: 2025-2-14 21:02
  
子程序名返回值类型公开备 注
_按钮1_被单击  
子程序_文本连续性 (“1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,”, 1, , )
子程序名返回值类型公开备 注
子程序_文本连续性  
参数名类 型参考可空数组备 注
文本文本型文本型
判断参数整数型整数型
连续次数整数型整数型,返回连续次数
不连续次数整数型整数型,返回不连续次数
变量名类 型静态数组备 注
文本文本型 
文本数组文本型0
i整数型 
文本 = “1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,”
文本数组 = 分割文本 (文本, “,”, )
计次循环首 (取数组成员数 (文本数组), i)
如果真 (文本数组 [i]到文本 (判断参数))  ' 文本参数判断0或1
如果真 (i = 1)  ' 判断i的大小防止小于数组成员数或大于数组成员数
判断 (文本数组 [i] = 文本数组 [i + 1])
连续次数 = 连续次数 + 1



如果真 (i = 取数组成员数 (文本数组))  ' 判断i的大小防止小于数组成员数或大于数组成员数
判断 (文本数组 [i] = 文本数组 [i - 1])
连续次数 = 连续次数 + 1



如果真 (i ≠ 1 i ≠ 取数组成员数 (文本数组))
判断 (文本数组 [i] ≠ 文本数组 [i - 1] 文本数组 [i] = 文本数组 [i + 1])
连续次数 = 连续次数 + 1
判断 (文本数组 [i] ≠ 文本数组 [i - 1] 文本数组 [i] ≠ 文本数组 [i + 1])
不连续次数 = 不连续次数 + 1





计次循环尾 ()
调试输出 (连续次数)
调试输出 (不连续次数)


i支持库列表   支持库注释   
spec特殊功能支持库



补充内容 (2025-2-14 21:10):
测试结果1连续次数6不连续次数2,0连续次数1不连续次数6,判断文本数组尾部的时候有问题,在第二个如果真下的判断不成立加一句不连续次数+1就行
作者: csc123    时间: 2025-2-14 21:40
鹏书 发表于 2025-2-14 20:20
相连6次可以理解 不连为什么会是2次?

两次0,1,0,不就是两次吗?
作者: csc123    时间: 2025-2-14 21:49
haoren1212 发表于 2025-2-14 21:02
[e=1].版本 2
.支持库 spec

差一点点,基本上了,上面的基础上加上后面两个1试下.
文本 = “1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,1,1,”
直接变成8次了




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4