CharMatcher
CharMatcher 用在字元的 trimming, collapsing, removing, retaining
@Test
public void char_matchers() {
String string = "12 ab 34 CD\r\n 56 ef789GH";
String noControl = CharMatcher.javaIsoControl().removeFrom(string); // remove control characters
String theDigits = CharMatcher.digit().retainFrom(string); // only the digits
String spaced = CharMatcher.whitespace().trimAndCollapseFrom(string, ' ');
// trim whitespace at ends, and replace/collapse whitespace into single spaces
String noDigits = CharMatcher.javaDigit().replaceFrom(string, "*"); // star out all digits
String lowerAndDigit = CharMatcher.javaDigit().or(CharMatcher.javaLowerCase()).retainFrom(string);
// eliminate all characters that aren't digits or lowercase
assertEquals("12 ab 34 CD 56 ef789GH", noControl);
assertEquals("123456789", theDigits);
assertEquals("12 ab 34 CD 56 ef789GH", spaced);
assertEquals("** ab ** CD\r\n ** ef***GH", noDigits);
assertEquals("12ab3456ef789", lowerAndDigit);
}
除了一些已經封裝的methods 以外,通用的 method 有三個
Method | Description | example |
---|---|---|
anyOf(CharSequence) | 要符合的字元 | CharMatcher.anyOf("aeiou") |
is(char) | 特定的 char | |
inRange(char, char) | 一連串的字元 | CharMatcher.inRange('a', 'z') |
@Test
public void char_matchers2() {
String string = "12 ab 34 CD\r\n 56";
String anyOfResult = CharMatcher.anyOf("cdef\r\n").removeFrom(string);
String isResult = CharMatcher.is('C').removeFrom(string);
String inRangeResult = CharMatcher.inRange('A', 'Z').removeFrom(string);
assertEquals("12 ab 34 CD 56", anyOfResult);
assertEquals("12 ab 34 D\r\n 56", isResult);
assertEquals("12 ab 34 \r\n 56", inRangeResult);
}
使用 CharMatcher 的 methods
Method | Description |
---|---|
collapseFrom(CharSequence, char) | 將一連串的字元,縮小變成一個 ex: WHITESPACE.collapseFrom(string, ' ') 會減少為只有一個空白字元 |
matchesAllOf(CharSequence) | 符合所有字元 |
removeFrom(CharSequence) | 移除符合字元 |
retainFrom(CharSequence) | 保留符合的字元 |
trimFrom(CharSequence) | 去掉 leading, trailing 符合的字元 |
replaceFrom(CharSequence, CharSequence) | 取代字元 |
Charsets
注意 "不要" 這樣寫
try {
bytes = string.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
// how can this possibly happen?
throw new AssertionError(e);
}
要改用 Charsets
bytes = string.getBytes(Charsets.UTF_8);
CaseFormat
Format | Example |
---|---|
LOWER_CAMEL | lowerCamel |
LOWER_HYPHEN | lower-hyphen |
LOWER_UNDERSCORE | lower_underscore |
UPPER_CAMEL | UpperCamel |
UPPER_UNDERSCORE | UPPER_UNDERSCORE |
CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "CONSTANT_NAME"));
// returns "constantName"
沒有留言:
張貼留言