You need to sign in to do that
Don't have an account?

Parsing specific string/integer
Hi all,
I have a controller that it's supposed to parse Subject line of an Email and extract a certain set of stings. For example,
If the Subject line is [112233-notification number 22] - [Customer Support], I want to be able to extract only the "112233" portion of the text.
I use the code below to find the index of "[" & index of last "-".
String extract = c.Subject.substring(c.Subject.indexOf('[')+1, c.Subject.LastIndexOf('-'));
However, I received "112233-notification number 22]" as my extract string.
How should I go about locating only the "112233" part?
My method needs to smart enough to locate only the integer between [ & - (within the closed [ ]).
Appreciate your inputs.
If you only want the "112233" part, do this:
String extract = c.Subject.substring(c.Subject.indexOf('[')+1, c.Subject.indexOf('-'));
In this example:
[112233-0099-notification number 22] - [Customer Support],
String extract = c.Subject.substring(c.Subject.indexOf('[')+1, c.Subject.IndexOf('-'));
extract returns 112233, but what about if I wanted to get 0099 or the string between the the two dashes.
Is there a string method that I can use to narrow my parsing down to the first [ and - combination?
If you are only interested in the content of the first bracketed section (i.e. [112233-0099-notification number 22]), then you should extract that part first, then split up the extract.
// Split your String into the bracketed sections
List<String> bracketedSections = c.Subject.split(' - ');
// You now have the following:
// bracketedSections[0] = '[112233-0099-notification number 22]';
// bracketedSections[1] = '[Customer Support]';
// Now, remove the brackets from your sections
for (String s : bracketedSections) s = s.replace('[','').replace(']','');
// You now have the following:
// bracketedSections[0] = '112233-0099-notification number 22';
// bracketedSections[1] = 'Customer Support';
// You can now split up your substrings even further, i.e.
List<String> subsections = bracketedSections[0].split('-');
// subsections[0] = '112233';
// subsections[1] = '0099';
// subsections[2] = 'notification number 22';
System.StringException: Ending position out of bounds: 0
Used the same code as explained above String extract = c.Subject.substring(c.Subject.indexOf('>')+1, c.Subject.indexOf('<'));