Split up a string into multiple strings based on a delimiter
/*
* JBoss, Home of Professional Open Source
* Copyright 2005, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
public class Main{
/** An empty string constant */
public static final String EMPTY = "";
/////////////////////////////////////////////////////////////////////////
// Spliting Methods //
/////////////////////////////////////////////////////////////////////////
/**
* Split up a string into multiple strings based on a delimiter.
*
* @param string String to split up.
* @param delim Delimiter.
* @param limit Limit the number of strings to split into
* (-1 for no limit).
* @return Array of strings.
*/
public static String[] split(final String string, final String delim,
final int limit)
{
// get the count of delim in string, if count is > limit
// then use limit for count. The number of delimiters is less by one
// than the number of elements, so add one to count.
int count = count(string, delim) + 1;
if (limit > 0 && count > limit)
{
count = limit;
}
String strings[] = new String[count];
int begin = 0;
for (int i = 0; i < count; i++)
{
// get the next index of delim
int end = string.indexOf(delim, begin);
// if the end index is -1 or if this is the last element
// then use the string's length for the end index
if (end == -1 || i + 1 == count)
end = string.length();
// if end is 0, then the first element is empty
if (end == 0)
strings[i] = EMPTY;
else
strings[i] = string.substring(begin, end);
// update the begining index
begin = end + 1;
}
return strings;
}
/**
* Split up a string into multiple strings based on a delimiter.
*
* @param string String to split up.
* @param delim Delimiter.
* @return Array of strings.
*/
public static String[] split(final String string, final String delim)
{
return split(string, delim, -1);
}
/////////////////////////////////////////////////////////////////////////
// Counting Methods //
/////////////////////////////////////////////////////////////////////////
/**
* Count the number of instances of substring within a string.
*
* @param string String to look for substring in.
* @param substring Sub-string to look for.
* @return Count of substrings in string.
*/
public static int count(final String string, final String substring)
{
int count = 0;
int idx = 0;
while ((idx = string.indexOf(substring, idx)) != -1)
{
idx++;
count++;
}
return count;
}
/**
* Count the number of instances of character within a string.
*
* @param string String to look for substring in.
* @param c Character to look for.
* @return Count of substrings in string.
*/
public static int count(final String string, final char c)
{
return count(string, String.valueOf(c));
}
}
Related examples in the same category
1. | The string passed to the split method is a regular expression | | |
2. | String.split(): " s".split(" ") -> {"","","s"} | | |
3. | String.split(): "".split("") (one empty string value array) | | |
4. | String.split(): " ".split(" ") -> {} (Empty array) | | |
5. | String.split(): " ".split(" ") ->(Empty array too) | | |
6. | String.split(): " s ".split(" ") -> {"","","s"} (!) (space before and after) | | |
7. | " ".split(" ") generates a NullPointerException | | |
8. | Using split() with a space can be a problem | | |
9. | String.split() is based on regular expression | | |
10. | Split a string using String.split() | | |
11. | Split by dot | | |
12. | Special character needs to be escaped with a \ | | |
13. | Escape special character with a \ | | |
14. | Keep the empty strings | | |
15. | Specify a regular expression to match one or more spaces | | |
16. | Split a String | | |
17. | Using second argument in the String.split() method to control the maximum number of substrings generated by splitting a string. | | |
18. | Special characters needs to be escaped while providing them as delimeters like "." and "|". | | |
19. | Control the maximum number of substrings generated by splitting a string. | | |
20. | Split with regular expression | | |
21. | Pattern Splitting for space splittor | | |
22. | Split Strings with Patterns: split("[-/%]") | | |
23. | Use split() to extract substrings from a string. | | |
24. | Split on word boundaries. | | |
25. | Split same string on commas and zero or more spaces. | | |
26. | Split on word boundaries, but allow embedded periods and @. | | |
27. | Split on various punctuation and zero or more trailing spaces. | | |
28. | Parsing Character-Separated Data with a Regular Expression | | |
29. | Parse a line whose separator is a comma followed by a space | | |
30. | Parse a line with and's and or's | | |
31. | Splits a String by Character type as returned by java.lang.Character.getType(char) | | |
32. | Splits a String by char: Groups of contiguous characters of the same type are returned as complete tokens. | | |
33. | Splits a string around matches of the given delimiter character. | | |
34. | Splits the provided text into an array with a maximum length, separators specified, preserving all tokens, including empty tokens created by adjacent separators. | | |
35. | Splits the provided text into an array with a maximum length, separators specified. | | |
36. | Splits the provided text into an array, separator specified, preserving all tokens, including empty tokens created by adjacent separators. | | |
37. | Splits the provided text into an array, separator specified. | | |
38. | Splits the provided text into an array, separator string specified. Returns a maximum of max substrings. | | |
39. | Splits the provided text into an array, separators specified, preserving all tokens, including empty tokens created by adjacent separators. | | |
40. | Splits the provided text into an array, separators specified. This is an alternative to using StringTokenizer. | | |
41. | Splits the provided text into an array, using whitespace as the separator, preserving all tokens, including empty tokens created by adjacent separators. | | |
42. | Break a string into tokens | | |
43. | String split on multicharacter delimiter | | |
44. | Split the source into two strings at the first occurrence of the splitter Subsequent occurrences are not treated specially, and may be part of the second string. | | |
45. | Returns the first substring that is enclosed by the specified delimiters. | | |
46. | Split strings | | |
47. | Splits the provided text into a list, based on a given separator. | | |