【问题标题】:Buffered reader - remove punctuation缓冲阅读器 - 删除标点符号
【发布时间】:2014-11-20 17:40:46
【问题描述】:

我需要阅读器方面的帮助,它将删除标点符号和数字,并从输入中创建字符串数组。

例如,在输入中,会有一个“example.txt”文件,其中包含如下内容:

Hello 123 , I'am new example ... text file!"

我需要我的阅读器创建包含以下内容的数组:

String[] example = {"Hello", "I", "am", "new", "example", "text", "file"}

有没有办法删除标点符号和数字并使用缓冲阅读器创建字符串数组?

提前谢谢你, 菲普库斯。

【问题讨论】:

  • 是的,有几种方法可以删除标点符号和数字,并使用 BufferedReader 创建字符串数组。

标签: java punctuation buffered


【解决方案1】:

另一种方法是使用 StringTokenizer。它的限制性更强,但我更喜欢它,因为您只需列出分隔符而不是正则表达式,这样更容易阅读。

String test = "Hello 123 , I'am new example ... text file!";
ArrayList<String> exampleTemp = new ArrayList<>();
String[] example = new String[6];

StringTokenizer st = new StringTokenizer(test, " ,.1234567890!");
while(st.hasMoreTokens()) 
{
    exampleTemp.add(st.nextToken());
} 
exampleTemp.toArray(example);

for(String word : example)
{
    System.out.println(word);
}

编辑:我修改它来填充一个字符串数组。不确定空白问题。

【讨论】:

  • 您好,这会在字符串中创建不需要的空格,然后我无法从中创建字符串数组(由空格分隔)。
  • 我修改它返回一个数组。
【解决方案2】:

使用String.split(regex)。 在String regex 中,您将必须删除的字符放在String regex = ",0123456789\\." 中。

【讨论】:

  • 提供更多细节,以便我们可以帮助您...发布一些代码:)
【解决方案3】:

最后,我把它修好了:

char[] alphabet= {'a','á','b','c','č','d','ď','e','é','ě','f','g','h',
            'i','í','j','k','l','m','n','ň','o','ó','p','q','r','ř','s','š','t','ť',
            'u','ú','ů','v','w','x','y','ý','z','ž','A','Á','B','C','Č','D','Ď','E','É',
            'Ě','F','G','H','I','Í','J','K','L','M','N','Ň','O','Ó','P','Q','R','Ř','S','Š','T',
            'Ť','U','Ú','Ů','V','W','X','Y','Ý','Z','Ž',' '};



                String vlozena = userInputScanner.nextLine();
                String fileContentsSingle = "";
                Integer lenght = vlozena.length();
                int j ;
                char cha;

                        /*
                         * kontroluje, zda se jedná o mezeru či písmeno české abecedy
                         * a poté jej přidá, pokud vyhovuje, do věty
                         */
                for (j = 0; j<lenght;j++) {
                    cha = vlozena.charAt(j);
                    for (char z : abeceda) {
                        if (cha == z) {
                            fileContentsSingle = fileContentsSingle + cha;
                        }
                    }
                }

                fileContentsSingle = fileContentsSingle.replaceAll("\\s+", " ");
                fileContentsSingle = fileContentsSingle.toLowerCase();
                String[] vetaNaArraySingle = fileContentsSingle.split("\\s+",-1);

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2017-09-23
    • 1970-01-01
    • 2015-08-30
    • 2011-10-23
    • 2023-03-23
    • 2012-06-25
    • 2020-10-24
    • 2015-02-06
    相关资源
    最近更新 更多