关闭

guava中的Splitter

167人阅读 评论(0) 收藏 举报

来源:

 java.lang.Object 

        com.google.common.base.Splitter

字符串分割器,顾名思义根据规则将输入的字符串进行分割输出。首先来个例子:

Splitter.on(',').split("foo,bar,qux"),结果为: "foo""bar" ,"qux",结果是以迭代器的形式返回,当然,后续会说明,还会有其他的形式。
Splitter可以通过添加过滤器,从而得到自己想要的结果,例如:
默认情况下:
Splitter.on(',').split(" foo,,,  bar ,"),返回的是[" foo", "", "", " bar ", ""]。
通过添加过滤器后:
private static final Splitter MY_SPLITTER = Splitter.on(',')
       .trimResults()
       .omitEmptyStrings();
MY_SPLITTER.split("foo,,, bar ,"),返回的结果:["foo", "bar"]
这里需要注意的是:Splitter实例是immutable,通过已经包含了配置方法返回的Splitter,重新配置是无效的。
例:Splitter splitter = Splitter.on('/');  splitter.trimResults();   return splitter.split("wrong / wrong / wrong");这种是无效的。
Splitter也提供了丰富的分割器方法和过滤器方法:
static SplitterfixedLength(int length)
Returns a splitter that divides strings into pieces of the given length.
Splitterlimit(int limit)
Returns a splitter that behaves equivalently to this splitter but stops splitting after it reaches the limit.
SplitteromitEmptyStrings()
Returns a splitter that behaves equivalently to this splitter, but automatically omits empty strings from the results.
static Splitteron(char separator)
Returns a splitter that uses the given single-character separator.
static Splitteron(CharMatcher separatorMatcher)
Returns a splitter that considers any single character matched by the given CharMatcher to be a separator.
static Splitteron(Pattern separatorPattern)
Returns a splitter that considers any subsequence matching pattern to be a separator.
static Splitteron(String separator)
Returns a splitter that uses the given fixed string as a separator.
static SplitteronPattern(String separatorPattern)
Returns a splitter that considers any subsequence matching a given pattern (regular expression) to be a separator.
Iterable<String>split(CharSequence sequence)
Splits sequence into string components and makes them available through an Iterator, which may be lazily evaluated.
List<String>splitToList(CharSequence sequence)
Splits sequence into string components and returns them as an immutable list.
SplittertrimResults()
Returns a splitter that behaves equivalently to this splitter, but automatically removes leading and trailing whitespace from each returned substring; equivalent to trimResults(CharMatcher.WHITESPACE).
SplittertrimResults(CharMatcher trimmer)
Returns a splitter that behaves equivalently to this splitter, but removes all leading or trailing characters matching the given CharMatcher from each returned substring.
Splitter.MapSplitterwithKeyValueSeparator(char separator)
Returns a MapSplitter which splits entries based on this splitter, and splits entries into keys and values using the specified separator.
Splitter.MapSplitterwithKeyValueSeparator(Splitter keyValueSplitter)
Returns a MapSplitter which splits entries based on this splitter, and splits entries into keys and values using the specified key-value splitter.
Splitter.MapSplitterwithKeyValueSeparator(String separator)
Returns a MapSplitter which splits entries based on this splitter, and splits entries into keys and values using the specified separator.
方法的详细说明:

Method Detail

  • on

    public static Splitter on(char separator)
    Returns a splitter that uses the given single-character separator. For example, Splitter.on(',').split("foo,,bar") returns an iterable containing ["foo", "", "bar"].
    Parameters:
    separator - the character to recognize as a separator
    Returns:
    a splitter, with default settings, that recognizes that separator
  • on

    public static Splitter on(CharMatcher separatorMatcher)
    Returns a splitter that considers any single character matched by the given CharMatcher to be a separator. For example, Splitter.on(CharMatcher.anyOf(";,")).split("foo,;bar,quux") returns an iterable containing ["foo", "", "bar", "quux"].
    Parameters:
    separatorMatcher - a CharMatcher that determines whether a character is a separator
    Returns:
    a splitter, with default settings, that uses this matcher
  • on

    public static Splitter on(String separator)
    Returns a splitter that uses the given fixed string as a separator. For example, Splitter.on(", ").split("foo, bar,baz") returns an iterable containing ["foo", "bar,baz"].
    Parameters:
    separator - the literal, nonempty string to recognize as a separator
    Returns:
    a splitter, with default settings, that recognizes that separator
  • on

    @GwtIncompatible(value="java.util.regex")
    public static Splitter on(Pattern separatorPattern)
    Returns a splitter that considers any subsequence matching pattern to be a separator. For example, Splitter.on(Pattern.compile("\r?\n")).split(entireFile) splits a string into lines whether it uses DOS-style or UNIX-style line terminators.
    Parameters:
    separatorPattern - the pattern that determines whether a subsequence is a separator. This pattern may not match the empty string.
    Returns:
    a splitter, with default settings, that uses this pattern
    Throws:
    IllegalArgumentException - if separatorPattern matches the empty string
  • onPattern

    @GwtIncompatible(value="java.util.regex")
    public static Splitter onPattern(String separatorPattern)
    Returns a splitter that considers any subsequence matching a given pattern (regular expression) to be a separator. For example, Splitter.onPattern("\r?\n").split(entireFile) splits a string into lines whether it uses DOS-style or UNIX-style line terminators. This is equivalent to Splitter.on(Pattern.compile(pattern)).
    Parameters:
    separatorPattern - the pattern that determines whether a subsequence is a separator. This pattern may not match the empty string.
    Returns:
    a splitter, with default settings, that uses this pattern
    Throws:
    PatternSyntaxException - if separatorPattern is a malformed expression
    IllegalArgumentException - if separatorPattern matches the empty string
  • fixedLength

    public static Splitter fixedLength(int length)
    Returns a splitter that divides strings into pieces of the given length. For example, Splitter.fixedLength(2).split("abcde") returns an iterable containing ["ab", "cd", "e"]. The last piece can be smaller than length but will never be empty.

    Exception: for consistency with separator-based splitters, split("") does not yield an empty iterable, but an iterable containing "". This is the only case in which Iterables.size(split(input)) does not equal IntMath.divide(input.length(), length, CEILING). To avoid this behavior, use omitEmptyStrings.

    Parameters:
    length - the desired length of pieces after splitting, a positive integer
    Returns:
    a splitter, with default settings, that can split into fixed sized pieces
    Throws:
    IllegalArgumentException - if length is zero or negative
  • omitEmptyStrings

    @CheckReturnValue
    public Splitter omitEmptyStrings()
    Returns a splitter that behaves equivalently to this splitter, but automatically omits empty strings from the results. For example, Splitter.on(',').omitEmptyStrings().split(",a,,,b,c,,") returns an iterable containing only ["a", "b", "c"].

    If either trimResults option is also specified when creating a splitter, that splitter always trims results first before checking for emptiness. So, for example, Splitter.on(':').omitEmptyStrings().trimResults().split(": : : ") returns an empty iterable.

    Note that it is ordinarily not possible for split(CharSequence) to return an empty iterable, but when using this option, it can (if the input sequence consists of nothing but separators).

    Returns:
    a splitter with the desired configuration
  • limit

    @CheckReturnValue
    public Splitter limit(int limit)
    Returns a splitter that behaves equivalently to this splitter but stops splitting after it reaches the limit. The limit defines the maximum number of items returned by the iterator.

    For example, Splitter.on(',').limit(3).split("a,b,c,d") returns an iterable containing ["a", "b", "c,d"]. When omitting empty strings, the omitted strings do no count. Hence, Splitter.on(',').limit(3).omitEmptyStrings().split("a,,,b,,,c,d") returns an iterable containing ["a", "b", "c,d". When trim is requested, all entries, including the last are trimmed. Hence Splitter.on(',').limit(3).trimResults().split(" a , b , c , d ") results in @{code ["a", "b", "c , d"]}.

    Parameters:
    limit - the maximum number of items returns
    Returns:
    a splitter with the desired configuration
    Since:
    9.0
  • trimResults

    @CheckReturnValue
    public Splitter trimResults()
    Returns a splitter that behaves equivalently to this splitter, but automatically removes leading and trailing whitespace from each returned substring; equivalent to trimResults(CharMatcher.WHITESPACE). For example, Splitter.on(',').trimResults().split(" a, b ,c ") returns an iterable containing ["a", "b", "c"].
    Returns:
    a splitter with the desired configuration
  • trimResults

    @CheckReturnValue
    public Splitter trimResults(CharMatcher trimmer)
    Returns a splitter that behaves equivalently to this splitter, but removes all leading or trailing characters matching the given CharMatcher from each returned substring. For example, Splitter.on(',').trimResults(CharMatcher.is('_')).split("_a ,_b_ ,c__") returns an iterable containing ["a ", "b_ ", "c"].
    Parameters:
    trimmer - a CharMatcher that determines whether a character should be removed from the beginning/end of a subsequence
    Returns:
    a splitter with the desired configuration
  • split

    public Iterable<Stringsplit(CharSequence sequence)
    Splits sequence into string components and makes them available through an Iterator, which may be lazily evaluated. If you want an eagerly computed List, use splitToList(CharSequence).
    Parameters:
    sequence - the sequence of characters to split
    Returns:
    an iteration over the segments split from the parameter.
  • splitToList

    @Beta
    public List<StringsplitToList(CharSequence sequence)
    Splits sequence into string components and returns them as an immutable list. If you want an Iterable which may be lazily evaluated, use split(CharSequence).
    Parameters:
    sequence - the sequence of characters to split
    Returns:
    an immutable list of the segments split from the parameter
    Since:
    15.0






 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2908次
    • 积分:82
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:9篇
    • 译文:0篇
    • 评论:0条
    文章存档