guava中的Splitter

来源:

 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






 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值