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.
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).
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.
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);