删除所有空格和所有 non-alphabet 个字符。小写 A-Z 的字符,将它们转换为大写

Remove all spaces and all non-alphabet characters. Characters that are A-Z in lower case, convert them to upper case

正如标题所说,我要删除所有空格和所有不是A-Z的字符。如果有小写字符,将它们转换为大写。 我想要的输出是:“THISISANEXAMPLEOUTPUTWITHONLYUPPERCASELETTER” 我该如何修复我的代码?

```
Here is what I have for the output right now:
 
THISISANEX
AMPLEOUTPUT
WITH
ONL
Y
UPPERCASELE
TT
E
R
123
```

------------示例文件------------

  

     This is an Ex
    
    amPle       outP&ut 
    
    
    
    . WiTH 
    
    On l
    
    Y
    Uppercase Le
    
    @
    Tt
    
    E
    R
    !!!!
    123
    
    ^

我的代码:

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) throws FileNotFoundException {
            Scanner file = new Scanner(new File("Example.txt"));
    
            while (file.hasNextLine()) {
                String input = file.nextLine();
    
                if (!input.isEmpty()) {
                    String res = input.toUpperCase().replaceAll("\P{Alnum}", "");
                    System.out.println(res);
                }
            }
        }
    }

使用分隔符\A一次读取整个文件。要替换所有非大写字符,请使用模式 [^A-Z].

Scanner file = new Scanner(new File("Example.txt"));
file.useDelimiter("\A");
if(file.hasNext()) {
    final String input = file.next();
    final String converted = input.toUpperCase().replaceAll("[^A-Z]", "");
    System.out.print(converted);
}

Demo!

您需要使用 \P{Alpha} 而不是 \P{Alnum}。检查 this 了解更多信息。

另外,替换

System.out.println(res);

System.out.print(res);

这些更改后的输出:

THISISANEXAMPLEOUTPUTWITHONLYUPPERCASELETTER