开源项目

相关文章

更多

最近更新

更多

Guava CharMatcher类处理JAVA char类型值

2019-04-23 23:12|来源: 网路

CharMatcher提供了各种方法来处理各种JAVA char类型值。

类声明

以下是com.google.common.base.CharMatcher类的声明:

@GwtCompatible(emulated=true)public final class CharMatcher
   extends Object

字体

S.N. 字段及说明
1 static CharMatcher ANY
匹配任意字符。
2 static CharMatcher ASCII
确定字符是否为ASCII码,这意味着它的代码点低于128。
3 static CharMatcher BREAKING_WHITESPACE
确定一个字符是否是一个破空白(即,一个空格可以解释为格式目的词之间休息)。
4 static CharMatcher DIGIT
确定一个字符是否是根据Unicode数字。
5 static CharMatcher INVISIBLE
确定一个字符是否是看不见的;也就是说,如果它的Unicode类是任何SPACE_SEPARATOR,LINE_SEPARATOR,PARAGRAPH_SEPARATOR,控制,FORMAT,SURROGATE和PRIVATE_USE根据ICU4J。
6 static CharMatcher JAVA_DIGIT
确定一个字符是否是按照Java的定义一个数字。
7 static CharMatcher JAVA_ISO_CONTROL
确定一个字符是否是所指定的Character.isISOControl(char)ISO控制字符。
8 static CharMatcher JAVA_LETTER
确定一个字符是否是按照Java的定义的字母。
9 static CharMatcher JAVA_LETTER_OR_DIGIT
确定一个字符是否是按照Java的定义,一个字母或数字。
10 static CharMatcher JAVA_LOWER_CASE
确定一个字符是否是按照Java定义的小写。
11 static CharMatcher JAVA_UPPER_CASE
确定一个字符是否是按照Java定义的大写。
12 static CharMatcher NONE
匹配任何字符。
13 static CharMatcher SINGLE_WIDTH
确定一个字符是否是单宽度(不是双倍宽度)。
14 static CharMatcher WHITESPACE
决定根据最新的Unicode标准是否字符是空白,如图所示这里。

构造函数

S.N. 构造函数 & 描述
1 protected CharMatcher()
构造方法,供子类使用。

类方法

S.N. 方法 & 描述
1 CharMatcher and(CharMatcher other)
返回一个匹配器,匹配两种匹配器和其他任何字符。
2 static CharMatcher anyOf(CharSequence sequence)
返回一个字符匹配匹配任何字符出现在给定的字符序列。
3 boolean apply(Character character)
不推荐使用。只有提供满足谓词接口;用匹配(字符)代替。
4 String collapseFrom(CharSequence sequence, char replacement)
返回输入字符序列的字符串拷贝,每个组连续的字符匹配此匹配由单一的替换字符替换。
5 int countIn(CharSequence sequence)
返回一个字符序列中发现匹配的字符的数目。
6 static CharMatcher forPredicate(Predicate<? super Character> predicate)
返回与相同的行为给定的基于字符的谓词匹配,但运行在原始的字符,而不是实例。
7 int indexIn(CharSequence sequence)
返回第一个匹配字符的索引中的一个字符序列,或-1,如果没有匹配的字符存在。
8 int indexIn(CharSequence sequence, int start)
返回第一个匹配字符的索引中的一个字符序列,从给定位置开始,或-1,如果没有字符的位置之后匹配。
9 static CharMatcher inRange(char startInclusive, char endInclusive)
返回一个字符匹配匹配给定范围内的任何字符(两个端点也包括在内)。
10 static CharMatcher is(char match)
返回一个字符匹配匹配只有一个指定的字符。
11 static CharMatcher isNot(char match)
返回一个字符匹配匹配除了指定的任何字符。
12 int lastIndexIn(CharSequence sequence)
返回最后一个匹配字符的索引中的字符序列,或-1,如果没有匹配的字符存在。
13 abstract boolean matches(char c)
确定给定字符一个true或false值。
14 boolean matchesAllOf(CharSequence sequence)
确定给定字符一个true或false值。
15 boolean matchesAnyOf(CharSequence sequence)
返回true如果字符序列包含至少一个匹配的字符。
16 boolean matchesNoneOf(CharSequence sequence)
返回true,如果一个字符序列中没有匹配的字符。
17 CharMatcher negate()
返回一个匹配器,不受此匹配匹配任何字符。
18 static CharMatcher noneOf(CharSequence sequence)
返回一个字符匹配器匹配不存在于给定的字符序列的任何字符。
19 CharMatcher or(CharMatcher other)
返回一个匹配器,匹配任何匹配或其他任何字符。
20 CharMatcher precomputed()
返回一个字符匹配功能上等同于这一个,但它可能会快于原来的查询;您的里程可能会有所不同。
21 String removeFrom(CharSequence sequence)
返回包含的字符序列的所有非匹配的字符,为了一个字符串。
22 String replaceFrom(CharSequence sequence, char replacement)
返回输入字符序列的字符串副本,其中每个字符匹配该匹配器由一个给定的替换字符替换。
23 String replaceFrom(CharSequence sequence, CharSequence replacement)
返回输入字符序列的字符串副本,其中每个字符匹配该匹配器由一个给定的替换序列替换。
24 String retainFrom(CharSequence sequence)
返回包含的字符序列的所有字符匹配,为了一个字符串。
25 String toString()
返回此CharMatcher,如CharMatcher.or(WHITESPACE,JAVA_DIGIT)的字符串表示。
26 String trimAndCollapseFrom(CharSequence sequence, char replacement)
折叠匹配字符完全一样collapseFrom一组如collapseFrom(java.lang.CharSequence, char) 做的一样,不同之处在于,无需更换一组被移除的匹配字符在开始或该序列的结束。
27 String trimFrom(CharSequence sequence)
返回输入字符序列省略了所有匹配器从一开始,并从该串的末尾匹配字符的字符串。
28 String trimLeadingFrom(CharSequence sequence)
返回输入字符序列,它省略了所有这些匹配的字符串开始处匹配字符的字符串。
29 String trimTrailingFrom(CharSequence sequence)
返回输入字符序列,它省略了所有这些匹配的字符串的结尾匹配字符的字符串。

继承的方法

这个类继承了以下类方法:

  • java.lang.Object

CharMatcher 例子

使用所选择的编辑器创建下面的java程序 C:/> Guava

GuavaTester.java

import com.google.common.base.CharMatcher;
import com.google.common.base.Splitter;
public class GuavaTester {
   public static void main(String args[]){
      GuavaTester tester = new GuavaTester();
      tester.testCharMatcher();
   }

   private void testCharMatcher(){
      System.out.println(CharMatcher.DIGIT.retainFrom("mahesh123")); // only the digits
      System.out.println(CharMatcher.WHITESPACE.trimAndCollapseFrom("     Mahesh     Parashar ", ' '));
      // trim whitespace at ends, and replace/collapse whitespace into single spaces
      System.out.println(CharMatcher.JAVA_DIGIT.replaceFrom("mahesh123", "*")); // star out all digits
      System.out.println(CharMatcher.JAVA_DIGIT.or(CharMatcher.JAVA_LOWER_CASE).retainFrom("mahesh123"));
      // eliminate all characters that aren't digits or lowercase
   }
 }

验证结果

使用javac编译器编译如下类

C:\Guava>javac GuavaTester.java

现在运行GuavaTester看到的结果

C:\Guava>java GuavaTester

看看结果

123
Mahesh Parashar
mahesh***
mahesh123


相关问答

更多

Guava:LinkedHashMultimap值为list而不是String(Guava : LinkedHashMultimap values as list and not String)

正如我们在javadoc中看到的, Multimap#entries()返回Collection<Map.Entry<K,V>> - 所以基本上,你迭代每个键/值对,而不是键/(值集)。 为此,请尝试将Multimap<K, V>为标准Map<K, List<V>> 。 你可以使用Multimap#asMap()来做到这一点,所以你的代码看起来像: mapLen.asMap().entrySet().stream().forEach(entry -> { System.out.printl ...

java的番石榴库(The Guava library: What are its most useful and/or hidden features? [closed])

严重的是,番石榴一切都很有用。 我一直在使用它一段时间,而且我仍然总是发现一些新的东西,它可以减少代码而不是用手做的。 有些事情其他人并没有真正提到我爱: Multimap只是很棒。 任何时候,您都可以使用Map<Foo, Collection<Bar>> ,使用多重图形,并为您自定义一个繁琐的检查映射到一个键的现有集合,如果不存在则创建和添加它。 Ordering对于构建Comparator是非常好的,它们的行为只是你想要的。 Maps.uniqueIndex和Multimaps.index : ...

Guava ImmutableMap中的性能警告(Performance warning in Guava ImmutableMap)

我使用java Enum作为我的密钥,因此有一个有效的.equals和.hashCode默认实现,对吧? 无论是equals还是hashcode都被覆盖,所以它几乎不会更快(即等于返回this == other )。 我的第二个问题是“让你的元素类型缓存自己的散列码”甚至意味着什么! 你可能有类似下面的代码,以避免多次计算 - 如果你这样做,你需要确保: 哈希码是不变的(即不能在实例的整个生命周期中改变) 你的hashcode方法是线程安全的(这可以通过使用局部变量来完成,例如或者更简单地通过使得 ...

Java对Guava TreeBasedTable进行排序(Java Sort a Guava TreeBasedTable)

如果您只是创建一个使用不同比较器对象创建的新TreeBasedTable,然后通过公共putAll方法将原始文件复制到其中,那该怎么办? 每个元素的put将采用log(N),因此总时间应为N log(n),这大约是重新排序所需的时间。 How about if you just create a new TreeBasedTable, created with a different comparator object, and then copy the original into it via ...

从Guava Multimap中的值返回键(Return key from value in Guava Multimap)

Guava为Multimap提供了一种反演方法。 请参见Multimaps.invertFrom 。 如果您不经常需要反演,或者您的multimap很小,这可能对您没问题。 但这种反转是一个昂贵的过程。 您可以通过简单地按照JB Nizet在评论中建议的正向和反向来获得一些效率。 然而,两者都可以是多重映射以允许非唯一性。 Guava supplies an inversion method for Multimap. See Multimaps.invertFrom. This might do ...

如何正确使用guava Closer(How to use guava Closer properly)

从番石榴自己的解释来看,你必须使用Throwable ,是的。 这是他们的示例代码段: public void foo() throws IOException { Closer closer = Closer.create(); try { InputStream in = closer.register(openInputStream()); OutputStream out = closer.register(openOutputStream()); // d ...

使用guava AbstractScheduledService(Using guava AbstractScheduledService)

AbstractScheduledServiced实现Service 。 Service接口描述了生命周期方法,包括startAsync 。 ServiceState枚举文字包含有关其含义的文档。 处于NEW状态的服务(刚刚创建): 处于此状态的服务处于非活动状态。 它做的工作量极少,占用资源极少。 要使服务执行某些有用的操作,您必须将其转换为RUNNING状态 此状态下的服务正在运行。 这就是为什么你必须在它做任何事之前启动服务的原因。 我还建议不要从构造函数中调用startAsync,而是从创 ...

不懂Guava PrimitiveSink(Don't understand Guava PrimitiveSink)

在您的第一个片段中,您执行以下操作: final String toHash = id + ts + secret; ts很long ; 但是,在上面的语句中,它将作为字符串附加。 在您的第二个片段中,您执行以下操作: .putLong(ts) 因此,您的输出将有所不同......您应该 .putString(String.valueOf(ts)) 代替。 In your first snippet you do: final String toHash = id + ts + secret ...

在Java 8中用Guava将两个列表拖入一个不可变的多图中?(Zip two lists into an immutable multimap in Java 8 with Guava?)

我认为你的程序代码已经是最优的解决方案(无论是在内存和速度方面,假设随机访问列表)。 用小的更正,以便您的代码编译,它将是: ImmutableListMultimap.Builder<Key, Value> builder = ImmutableListMultimap.builder(); for (int i = 0; i < Math.min(keys.size(), values.size()); i++) { builder.put(keys.get(i), values.get( ...

无法从Guava解析通用参数TypeToken(Cannot resolve generic parameter TypeToken from Guava)

这就是TypeToken “hack”的工作方式。 它使用Class#getGenericSuperclass() (或getGenericSuperInterface )。 它的javadoc说 如果超类是参数化类型,则返回的Type对象必须准确反映源代码中使用的实际类型参数。 在这种情况下,这就是O public abstract class AbstractMenuOptionBuilder<O extends IClickable> 您将获得源代码中的硬编码。 如果您将Link作为类型参 ...