簡體   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