我需要修剪一個字符串,比如說abc + cd + ze ::: 123 ::: 12 + abcd,給123,我需要提取ze ::: 123 ::: 12。如何從最靠近的最近的+和最靠近的最近的+修剪一個字符串?正在進行中4gl
0
A
回答
0
正如Screwtape說,這是很容易做到這一點使用ENTRY
。
如果你由於某種原因想要使用INDEX
和搜索職位,你可以這樣做。 R-INDEX
將幫助您 - 從右到左搜索字符串,而不是從左到右。
如果您的實例有多個與您的搜索字符串匹配的條目,則此示例會有問題。在這種情況下,它將返回最左邊的匹配條目。
DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
DEFINE VARIABLE cSearch AS CHARACTER NO-UNDO.
DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
DEFINE VARIABLE iPosition AS INTEGER NO-UNDO.
DEFINE VARIABLE iLeftPlus AS INTEGER NO-UNDO.
DEFINE VARIABLE iRightPlus AS INTEGER NO-UNDO.
DEFINE VARIABLE iLength AS INTEGER NO-UNDO.
/* This is the string we're searching in */
cString = "abc+cd+ze:::123:::12+abcd".
/* This is what we're searching for */
cSearch = "123".
/* Get a starting position */
iPosition = INDEX(cString, cSearch).
/* Start at starting position and look right-to-left for a plus sign */
/* Add 1 since we don't want the plus sign */
iLeftPlus = R-INDEX(cString, "+", iPosition) + 1.
/* Start at starting position and look left-to-right for a plus sign */
iRightPlus = INDEX(cString, "+", iPosition).
/* If there isn't a rightmost + */
IF iRightPlus = 0 THEN
iRightPlus = LENGTH(cString).
/* Calculate the length of the result string */
iLength = iRightPlus - iLeftPlus.
/* Use substring to create resulting string */
cResult = SUBSTRING(cString, iLeftPlus, iLength).
MESSAGE cResult VIEW-AS ALERT-BOX INFORMATION.
1
表面上,子字符串是顯而易見的方式,因爲您正在尋找兩個分隔符之間的東西,實際上ENTRY更容易。但是,只有在可以保證所查找的字符串不包含分隔符的情況下才有效。進度無法解碼帶引號或以其他方式逃脫的分隔符。
這似乎爲我工作:
DEF VAR testStr AS CHAR INITIAL "abc+cd+ze:::123:::12+abcd".
DEF VAR matchStr AS CHAR INITIAL "123".
DEF VAR outStr AS CHAR.
DEF VAR delim AS CHAR INITIAL "+".
DEF VAR i AS INT.
DO i = 1 TO NUM-ENTRIES(testStr, delim):
IF ENTRY(i, testStr, delim) MATCHES "*" + matchStr + "*" THEN DO:
outStr = ENTRY(i, testStr, delim).
LEAVE.
END.
END.
DISPLAY outStr.
+0
當我看到這個問題時,我想讓OpenEdge把它看作一個分隔列表(用+作爲分隔符)。但我有一個帶有位置字段和條目的臨時表,並且在每次迭代中,我都會創建一個記錄,使我成爲位置和結果的入口函數的入口值。 這樣,您就可以以更好的方式將整個列表存儲起來進行搜索和使用。只是我2美分 – bupereira
相關問題
- 1. 最近/最近一個月的帖子
- 2. 找到最靠近的一條線
- 3. GeoIP最近(最近)的國家
- 4. 最近表格的最近表格
- 5. 與最近的行
- 6. jQuery的從最近
- 7. 將最近一行與同一表中的最近一行進行比較
- 8. 最近的2
- 9. SQL最近行
- 10. 靠近
- 11. 獲取最近的和最近的項目之前的項目
- 12. 字符串近似值(從字典中獲取最近匹配的字符串)
- 13. 「最近閱讀」和「最近添加」的定義 - Mendeley的類別
- 14. 分數逼近最近
- 15. 找到每個點的最近點(最近的鄰居)
- 16. 最接近的匹配字符串
- 17. 查找最近的字符串匹配
- 18. 如何「修剪」一個arrayList只有5個最近的值? :
- 19. 最近與JavaScript的
- 20. 選擇最近的
- 21. 最接近的值
- 22. 最近的記錄
- 23. 最近的文檔
- 24. 最近3周的第一天和最近3個月的第一天
- 25. 在最近的Ubuntu上構建最近的numpy
- 26. 最近一行在MySQL
- 27. 查找最近和最接近的帖子,限制20
- 28. 查找最近和最接近的帖子,限制20
- 29. 如何使用typeahead按最近的字符串進行排序?
- 30. 的jQuery - 選擇輸入最接近/最近DIV&每個輸入
嗨! SUBSTRING是顯而易見的命令。你大概需要找到123,然後確定你需要之前和之後有多遠。你還沒有提供足夠的信息來幫助你 - 那些規則是什麼?你在尋找兩個人之間的一切嗎? – Screwtape
是的,所有的字符串給出和最近的兩個+ s之間 – mac100