gpt4 book ai didi

从字符串中提取单词的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:33 24 4
gpt4 key购买 nike

我正在使用 TELON/COBOL atm,我需要一种算法来从字符串中提取单词。尝试搜索但找不到类似的东西。

无论如何,算法需要提取单词,并忽略空格;这是我到目前为止的内容(我为不熟悉 e 语法的人添加了评论)

WS-STRING 是输入字符串

WS-WORD-LEN是要提取的词的长度

WS-LST-WORD-P 是当前要提取的词的起始位置(在sting内)

WS-SUB1 是循环索引

PERFORM TEST BEFORE                                      
VARYING WS-SUB1 FROM 1 BY 1
UNTIL WS-SUB1 > WS-STRING-LEN //loop for each char in the string, add 1 to WS-SUB1 in each itiaration
EVALUATE TRUE
WHEN WS-STRING(WS-SUB1:1) = SPACES //if the current char is a space
MOVE WS-SUB1 TO WS-SUB1-FRD
ADD 1 TO WS-SUB1-FRD
IF WS-STRING(WS-SUB1-FRD:1) = SPACES //Checks to see if the next char is a space
ADD 1 TO WS-LST-WORD-P
ELSE
MOVE WS-STRING(WS-LST-WORD-P:WS-WORD-LEN) //Substing "WS-WORD-LEN" many char from "WS-STRING" starting at "WS-LST-WORD-P" into "WS-WORD-OUT"
TO WS-WORD-OUT
ADD 1 TO WS-COUNT(2)
PERFORM Z-400-OUTPUT-WORD //This outputs "WS-WORD-OUT" to a file.
MOVE WS-SUB1 TO WS-LST-WORD-P
MOVE 1 TO WS-WORD-LEN
END-IF
WHEN OTHER
ADD 1 TO WS-WORD-LEN
END-EVALUATE
END-PERFORM
MOVE 1 TO WS-LST-WORD-P

这个算法有点工作,但一些输出在开始/结束时拼接。那么关于这里有什么问题或提出更好的建议有什么想法吗?

最佳答案

你看过 UNSTRING 了吗?它似乎是为您的情况量身定做的。

MOVE 1 TO WS-SUB1
PERFORM UNTIL WS-SUB1 >= LENGTH OF WS-STRING
UNSTRING WS-STRING DELIMITED SPACE
INTO WS-WORD-OUT COUNT IN WS-WORD-LEN
POINTER WS-SUB1
END-UNSTRING
ADD 1 TO WS-COUNT(2)
PERFORM Z-400-OUTPUT-WORD
ADD WS-WORD-LEN TO WS-SUB1
END-PERFORM

注意:代码只是徒手编写的、未编译和测试的。

关于从字符串中提取单词的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11303235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com