簡體   English   中英

如何在Java中打印給定字符串中的字符、數字和特殊字符?

[英]How to print character, Number and special character from given String in Java?

給定字符串是str = "aQt4512m@!%n"輸出:

character:aQtmn , Number:4512 special:@!%

下面是代碼,我試過了,但它是唯一的打印字符

String str = "asDftQ32$34h";
        
char[] chArr = str.toCharArray();
Character myChar = '\0';
        
for(int i=0;i<chArr.length;i++) {
    myChar = '\0';  
    if(chArr[i]>=65 && chArr[i]<=122) {
        myChar =chArr[i];   
    }
        
    String tr = myChar.toString();
    String dr = tr.replaceAll("\\W","");
    System.out.print(dr);
}

您可以像示例中那樣使用 replaceAll() 來做到這一點:

public class Main {
    public static void main( String[] arg ) {
        String str = "aQt4512m@!%n";

        String chars = str.replaceAll( "[\\W\\d]", "" );
        System.out.println( chars );

        String special = str.replaceAll( "\\w", "" );
        System.out.println( special );

        String numbers = str.replaceAll( "\\D", "" );
        System.out.println( numbers );
    }
}

檢查此以獲取有關正則表達式的更多信息: https ://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

 public void printString()
   {
       String input = "asDftQ32$34h";
       List<Character> numbers = new ArrayList<>();
       List<Character> letters = new ArrayList<>();
       List<Character> specialChars = new ArrayList<>();
       for (char current: input.toCharArray()) {
           if(Character.isDigit(current))
           {
               numbers.add(current);
           }
           else if(Character.isAlphabetic(current))
           {
               letters.add(current);
           }
           else
               specialChars.add(current);
       }
       System.out.println("All Letters In String :"+ letters);
       System.out.println("All Numbers In String :"+ numbers);
       System.out.println("All Special Characters In String :"+ specialChars);


   }

使用字符 API

由於您顯然被允許使用正則表達式,因此您可以使用字符類來完成以下工作:

String str = "asDftQ32$34h";

System.out.println("character: " + str.replaceAll("\\P{L}", ""));
System.out.println("number: " + str.replaceAll("\\P{N}", ""));
System.out.println("special: " + str.replaceAll("\\p{Alnum}", ""));

這是代碼:

  • 處理文本字符串
  • 沿途檢查每個字符c
  • 如果c在 az 或 AZ 的范圍內,它會附加到名為“characters”的 StringBuilder
  • 如果它在 0-9 的范圍內,則附加到“數字”
  • 如果它在特殊字符事物的其他幾個范圍內,則附加到“特殊”
  • 如果它在任何這些范圍之外,它會與字符一起打印一條消息
private static void separateCharacters(String str) {
    StringBuilder characters = new StringBuilder();
    StringBuilder digits = new StringBuilder();
    StringBuilder special = new StringBuilder();

    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        if (Character.isAlphabetic(c)) {
            characters.append(c);
        } else if (Character.isDigit(c)) {
            digits.append(c);
        } else if ((c >= 33 && c <= 47) ||
                (c >= 58 && c <= 64) ||
                (c >= 91 && c <= 96) ||
                (c >= 123 && c <= 126)) {
            special.append(c);
        } else {
            System.out.println("skipping character: " + c);
        }
    }

    System.out.println("characters : " + characters);
    System.out.println("digits     : " + digits);
    System.out.println("special    : " + special);
}

這是一個輸出“aQt4512m@!%n”的運行:

separateCharacters("aQt4512m@!%n");

characters : aQtmn
digits     : 4512
special    : @!%

同樣,這次是“aQt4512m@!%n[-=":

separateCharacters("azrRt07572m@!%n[-=");

characters : azrRtmn
digits     : 07572
special    : @!%[-=

我不喜歡“特殊”處理,但這應該足以說明如何修改代碼以包含/排除任何不同組的其他字符。 或者,您可以選擇遵循所有非字母、非數字字符都是“特殊”的邏輯,在這種情況下,您可以將默認的“else”語句設置為special.append(c)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM