繁体   English   中英

java - 在输出中打印特殊字符和空格

[英]java - printing special characters and spaces in output

我有一种情况,我正在从一个包含特殊字符的文件中读取,如 ,$@%! 随着空间。 例如:

我在这里!!! 真的,_我_我_在这里吗?

在上面的字符串中,我显示了一个带下划线的空格,只是为了表明我可以遇到多个空格(比如 am 之前的两个)以及特殊字符。 所以我只是使用 _ 作为视觉辅助。 在真实文件中,它实际上是一个空格或多个空格。

如何从输入中读取此文件并跟踪它们。 是否可以隔离特殊字符和空格并将它们与读取的单词一起打印到输出。 我想简而言之,我想在修改程序读取的单词的同时保留特殊字符和空格。

例如输入字符串:

我在这里!!! 真的,_我_我_在这里吗?

会成为:

我在这里!!! 真的,__2_I_2?

在这里,我正在读取输入字符串,计算出现多次的单词并打印输出以及原始输入中出现的空格和特殊字符。 我怎样才能在 Java 中做到这一点? 谢谢

要在字符串中查找单词,最简单的方法是使用正则表达式。 正则表达式\\p{L}+将查找一个或多个 Unicode 字母的任何序列。

要用直到找到单词才知道的值替换这些单词,您可以使用用于查找单词的MatcherappendReplacement()appendTail()方法。

既然你想统计一个词之前被看过多少次,你可以使用Map<String, Integer>来维护一个已经看过的词的映射,以及到目前为止已经看过多少次的计数。

这是它的工作方式:

String input = "I am here!!! really,  am I here?  Why, yes I really am!";

Map<String, Integer> wordCount = new HashMap<>();
StringBuffer buf = new StringBuffer();
Matcher m = Pattern.compile("\\p{L}+").matcher(input);
while (m.find()) {
    String word = m.group();
    Integer count = wordCount.get(word);
    if (count == null)
        wordCount.put(word, 1);
    else {
        wordCount.put(word, ++count);
        m.appendReplacement(buf, count.toString());
    }
}
String output = m.appendTail(buf).toString();

System.out.println(input);
System.out.println(output);

输出

I am here!!! really,  am I here?  Why, yes I really am!
I am here!!! really,  2 2 2?  Why, yes 3 2 3!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM