0

I have string like this.

,mon,,tue,wed,,,thu,

I want out out put like this.

mon,tue,wed,thu

Is there any way to do this and store it in a string.

Thanks in Advance.

2

Here is a working code sample for your problem. If you want you can remove comma from last using removeEnd(',')

string test =',mon,,tue,wed,,,thu,';
List<string> testList = test.split(',');
string newString = '';
for(String str : testList)
    if(str.getChars().size() >0)
        newString =newString+str+',';
system.debug('newString+'+newString);

In the new string you will get

mon,tue,wed,thu,

you can remove last comma from removeEnd method(If you don't want it).

0
2

This regex will match the commas at the end of your string and you can use it to replace them with empty string ""

This regex will look for 2 or more commas somewhere in your string except at the beginning and the end. You can use this regex to replace multiple commas with a single one ","

Let me know if this helped.

2

While the accepted answer is valid, I think it is much cleaner to use String.isNotBlank and String.join:

public static String cleanCommaJoin(String input)
{
    List<String> notBlankEntries = new List<String>();
    for (String entry : input.split(','))
        if (String.isNotBlank(entry)) notBlankEntries.add(entry.trim());
    return String.join(notBlankEntries, ',');
}

String.join is a simple solution to the common trailing delimiter anti-pattern. Because of using String.isNotBlank, it also still works if you had, for instance:

String input =' , mon, , tue, wed, , , thu, ';
String output = cleanCommaJoin(input))
system.assertEquals('mon,tue,wed,thu', output);
1
  • 1+ for awesome answer. Thank you so much Adrian. – MIX DML Oct 15 '15 at 17:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.