Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Using STREXTRACT
Message
From
06/10/2018 15:02:27
Antonio Lopes (Online)
BookMARC
Coimbra, Portugal
 
 
To
06/10/2018 13:59:02
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows 7
Network:
Windows XP
Database:
Visual FoxPro
Application:
Desktop
Miscellaneous
Thread ID:
01662486
Message ID:
01662490
Views:
39
>>>Hi,
>>>Please consider these two cases
>>>
>>>A=F1 (Plan 99 \Old Plan 100\)472 676 w
>>>A=F1 (Plan 99 \(Old Plan 100\))472 676 w
>>>
>>>
>>>I need to Extract the Text Between the two Brackets i.e "(" and ")"
>>>
>>>If I use STREXTRACT(A,'(',')'), for the first Case I get " Plan 99 \Old Plan 100\", which is correct as per my requirement.
>>>
>>>But I get "Plan 99 \(Old Plan 100\" for my second case while It need "Plan 99 \(Old Plan 100\)".
>>>
>>>I Need to extract the Text Between Two Extreme Brackets. How to do this in both the above situation.
>>>
>>>Thanks
>>
>>Harsh,
>>
>>A generalized function that expands on STREXTRACT():
>>
>>
>>? OuterStrExtract("A=F1 (Plan 99 \Old Plan 100\)472 676 w", "(", ")")
>>? OuterStrExtract("A=F1 (Plan 99 \(Old Plan 100\))472 676 ", "(", ")")
>>
>>FUNCTION OuterStrExtract (Searched AS String, BeginDelimiter AS String, EndDelimiter AS String)
>>
>>	LOCAL ARRAY Segments(1)
>>	LOCAL SegIndex AS Integer
>>	LOCAL RebuildInnerStr AS String
>>	LOCAL OuterString AS String
>>
>>	m.OuterString = ""
>>	m.RebuildInnerStr = ""
>>
>>	FOR m.SegIndex = 1 TO ALINES(m.Segments, STREXTRACT(m.Searched, m.BeginDelimiter, "", 1), 0, m.EndDelimiter) - 1
>>		m.OuterString = m.OuterString + m.RebuildInnerStr + m.Segments(m.SegIndex)
>>		m.RebuildInnerStr = m.EndDelimiter
>>	ENDFOR
>>
>>	RETURN m.OuterString
>>
>>ENDFUNC
>>
>
>
>Thank You Sir

Great that it can be useful. Nevertheless, a small correction: ALINES flags should be set to 2, for the situations when the full string ends when the extracted outer string also ends.
----------------------------------
António Tavares Lopes
Previous
Reply
Map
View

Click here to load this message in the networking platform