Bir dize kesmem gerekiyor, diyelim abc + cd + ze ::: 123 ::: 12 + abcd, 123 verildi, ze'yi çıkarmam lazım ::: 123 ::: 12.Bir ipi en soldaki en yakın + ve en yakın + nasıl kırpılır? devam ediyor 4gl
cevap
Screwtape o ENTRY
kullanarak bunu yapmak için oldukça kolay söylediği gibi.
Eğer herhangi bir nedenle INDEX
ve arama pozisyonlarını kullanmak istiyorsanız bunu yapabilirsiniz. R-INDEX
size yardımcı olacaktır - dizeyi soldan sağa değil de sağdan sola doğru arama.
Örneğin, arama dizginizle eşleşen birden fazla girdiniz varsa, bu örnekte sorun olacaktır. Bu durumda en soldaki eşleşen girişi döndürür.
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.
Yüzeyde iken, substring açık yoldur, çünkü iki sınırlayıcı arasında bir şey arıyorsanız, aslında GİRİŞ daha kolaydır. Ancak, yalnızca aradığınız dizenin sınırlayıcı içermediğini garanti ederseniz çalışır. İlerleme, alıntılanan veya başka bir şekilde kaçtılan sınırlayıcıların kodunu çözemez.
Bu benim için iş gibi görünüyor:
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.
Soruyu gördüğümde, OpenEdge'in onu sınırlandırılmış bir liste olarak görmesini (+ sınırlayıcı olarak) düşündüm. Ama ben bir pozisyon alanı ve giriş ile bir temp-masa var ve her bir yinelemede DO i = 1 ila NUM-ENTRIES ... Bir kayıt oluşturacağım, pozisyon ve sonuç yapalım giriş fonksiyonu giriş değeri. Bu şekilde, tüm listeyi arama ve kullanma için daha iyi bir şekilde saklarsınız. Sadece 2 sentim – bupereira
- 1. En yakın çeyreğe en yakın çeyreğe nasıl taşınır
- 2. Yuvarlama en yakın beş
- 3. En yakın zaman damgası
- 4. Listeden en yakın tarihi bul
- 5. SQLite - en yakın değeri alma
- 6. piton grubu en yakın değerlere
- 7. javascript - en yakın tam sayıya
- 8. İki poligonun en yakın noktaları
- 9. En Yakın Dışbükey Çokgenleri Birleştir
- 10. JavaScript'te En Yakın Eşlik Algoritması
- 11. Yuvarlatılmış en yakın tam sayı
- 12. En son ve en yakın gönderileri bul, sınırla 20
- 13. jquery: en yakın ('h3') seçici?
- 14. K en yakın komşu python
- 15. Bir DateTime'ı en yakın Dönem'e nasıl geçiririm
- 16. En yakın enlem ve boylamı bulun
- 17. R - A, B ve * en yakın * C?
- 18. En yakın enlem ve boylam noktalarını bul
- 19. Geçerli lat ve en yakın Parse API (parse.com) kullanarak en yakın yerler bulmak için Android
- 20. Bir çiftin en yakın tam sayıya yuvarlanması
- 21. Python/Numpy - Dizini, Bir Değere En Yakın Dizide Bul Bazı Değerlere En Yakın
- 22. Bir Java BigDecimal'i en yakın aralığa yuvarlama
- 23. Bir sorguda en yakın tarihi bul
- 24. Bir data.table içinde en yakın değeri bulma
- 25. Javascript'te en yakın varlığı nasıl alabilirim?
- 26. Belirli bir numaraya en yakın numaraları bulma
- 27. en verimli veri yapısı: Hızlı kriteri ekleme, en yakın değeri
- 28. Yuvarlak ondalık en iyi Ruby uygulamasının en yakın 0,575
- 29. PHP - Listeden en yakın RGB'yi bulmak için en yakın RGB'yi bulun
- 30. lon \ lat noktalarının listesini sırala, en yakın
Merhaba! SUBSTRING bariz bir komuttur. Muhtemelen 123'ü bulmanız ve sonra ihtiyaç duyduğunuzdan önce ve sonra ne kadar uzak olduğunu belirlemeniz gerekir. Bu konuda size yardımcı olabilecek yeterli bilgi vermediniz - kurallar nelerdir? İki + s arasındaki her şeyi mi arıyorsunuz? – Screwtape
Evet, verilen her şey ve en yakın iki + s arasındaki altlık – mac100