splitter工具可以按照分隔符拆分字符串:
示例:
package org.example.model;
import com.google.common.base.Splitter;
import org.junit.Test;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import static org.assertj.core.api.Assertions.assertThat;
public class SplitterTest {
@Test
public void testSplitters(){
// 1. 按照分隔符‘|‘分割字符串
List<String> splitList = Splitter.on("|").splitToList("Hello|world");
assertThat(splitList).isNotEmpty().containsExactly("Hello", "world");
// 2. 如果有连续分隔符,会分割出空字符串
splitList = Splitter.on("|").splitToList("Hello||world");
assertThat(splitList).isNotEmpty().containsExactly("Hello", "", "world");
// 3. 忽略结果中的空字符串, omit为忽略的以上
splitList = Splitter.on("|").omitEmptyStrings().splitToList("Hello||world");
assertThat(splitList).isNotEmpty().containsExactly("Hello", "world");
// 4. 忽略分割后字符串前后的空白字符
splitList = Splitter.on("|").omitEmptyStrings().trimResults().splitToList(" Hello | | world ");
assertThat(splitList).isNotEmpty().containsExactly("Hello", "world");
// 5. 按照固定长度分割字符串
splitList = Splitter.fixedLength(4).splitToList("aaaabbbbcccc");
assertThat(splitList).isNotEmpty().containsExactly("aaaa", "bbbb", "cccc");
// 6. 用limit设置最大分割数,分割的最后一个字符串为剩余的所有字符
splitList = Splitter.fixedLength(4).limit(2).splitToList("aaaabbbbcccc");
assertThat(splitList).isNotEmpty().containsExactly("aaaa", "bbbbcccc");
// 7. 拆分成map
// 7.1 方式1
Map<String, String> splitMap = Splitter.on(";").withKeyValueSeparator("=").split("a=10;b=100");
assertThat(splitMap).isNotEmpty().extractingByKeys("a", "b").containsExactly("10", "100");
// 7.2 方式2
splitMap = Splitter.on(";").withKeyValueSeparator(Splitter.on("=")).split("a=10;b=100");
assertThat(splitMap).isNotEmpty().extractingByKeys("a", "b").containsExactly("10", "100");
// 8. 按照正则表达式拆分
// 8.1 方式1
splitList = Splitter.onPattern("\\|").splitToList("Hello|world");
assertThat(splitList).isNotEmpty().containsExactly("Hello", "world");
// 8.2 方式2
splitList = Splitter.on(Pattern.compile("\\|")).splitToList("Hello|world");
assertThat(splitList).isNotEmpty().containsExactly("Hello", "world");
}
}