簡體   English   中英

如何忽略字符串中的特殊字符和空格?

[英]How to ignore special characters and spaces in string?

因此,我開發了此代碼將單詞轉換為電話號碼,並且在顯示結果時如何編碼它以忽略輸入的空格?

所以我的意思是允許用戶在單詞之間輸入空格,但不反映在結果中。

 import java.util.Scanner;

{
public static void main (String[] args)
{
Scanner  console = new Scanner(System.in);


{  
System.out.println("Enter the a word to be converted : ");

String  Letter = console.next ();
Letter = Letter.toUpperCase();
Letter = Letter.toLowerCase();
String  Number="";

int count=0;
int  i=0;

while(count < Letter.length())
  {switch(Letter.charAt(i))
   {case 'A':case 'B':case 'C': case 'a': case 'b': case 'c':
              Number += "2";
              count++;
      break;
  case 'D':case 'E':case 'F': case 'd': case 'e': case 'f':
               Number += "3";
              count++;
      break;
   case 'G':case 'H':case 'I': case 'g': case 'h': case 'i':
              Number += "4";
              count++;
      break;
    case 'J':case 'K':case 'L': case 'j': case 'k': case 'l':

              Number += "5";
             count++;
      break;
    case 'M':case 'N':case 'O': case 'm': case 'n': case 'o':
          Number += "6";
              count++;
      break; 
    case 'P':case 'R':case 'S': case 'p': case 'r': case 's':
              Number += "7";
              count++;
      break;
    case 'T':case 'U':case 'V': case 't': case 'u': case 'v': 
            Number += "8";   
            count++;
      break;
    case 'W':case 'X':case 'Y':case 'Z': case 'w': case 'x': case 'y': case 'z':
         Number += "9";
         count++;
      break;
      }
    if(  count==3) {
       Number += "-";
   }
   i++;
           }     
    System.out.println( Number );

   }


   }}

要忽略空格,可以使用以下命令:

String.trim();

這將trim字符串中的所有空格。 有關更多信息,請參見String.trim()

並檢查字符串是否除字母外還包含其他內容,您可以使用:

public boolean isAlpha(String name) {
    char[] chars = name.toCharArray();

    for (char c : chars) {
        if(!Character.isLetter(c)) {
            return false;
        }
    }

    return true;
}

如果需要速度,或者為了簡單起見,可以使用:

public boolean isAlpha(String name) {
    return name.matches("[a-zA-Z]+");
}
  String content = "asda saf oiadgod iodboiosb dsoibnos";
  content = content.replaceAll("\\s", "");
  System.out.println(content);

為您的代碼

System.out.println("Enter the a word to be converted : ");

    String Letter = console.nextLine();
    Letter = Letter.replaceAll("\\s", "");
    Letter = Letter.toUpperCase();
    Letter = Letter.toLowerCase();
    String Number = "";
 import java.util.Scanner;

{
public static void main (String[] args)
{
Scanner  console = new Scanner(System.in);


{  
System.out.println("Enter the a word to be converted : ");

String  Letter = console.next ();
Letter = Letter.toUpperCase();
Letter = Letter.toLowerCase();
String  Number="";

int count=0;
int  i=0;

while(count < Letter.length())
  {switch(Letter.charAt(i))
   {
   case 'A':case 'B':case 'C': case 'a': case 'b': case 'c':
              Number += "2";
              count++;
      break;
  case 'D':case 'E':case 'F': case 'd': case 'e': case 'f':
               Number += "3";
              count++;
      break;
   case 'G':case 'H':case 'I': case 'g': case 'h': case 'i':
              Number += "4";
              count++;
      break;
    case 'J':case 'K':case 'L': case 'j': case 'k': case 'l':

              Number += "5";
             count++;
      break;
    case 'M':case 'N':case 'O': case 'm': case 'n': case 'o':
          Number += "6";
              count++;
      break; 
    case 'P':case 'R':case 'S': case 'p': case 'r': case 's':
              Number += "7";
              count++;
      break;
    case 'T':case 'U':case 'V': case 't': case 'u': case 'v': 
            Number += "8";   
            count++;
      break;
    case 'W':case 'X':case 'Y':case 'Z': case 'w': case 'x': case 'y': case 'z':
         Number += "9";
         count++;
      break;
    default:
        //Ignore anything else
        break;
      }
    if(  count==3) {
       Number += "-";
   }
   i++;
           }     
    System.out.println( Number );

   }


   }}

通過在交換機的情況下使用default,您可以忽略所有其他響應。因此,如果y鍵入交換機中未包含的任何內容,則不會添加到您的計數或數字中。

您可以將非字母數字字符串中的字符替換為blank( "" ),然后使用該字符串進行處理。 您可以使用String.replaceAll()方法。

用給定的替換項替換該字符串中與給定的正則表達式匹配的每個子字符串。

例如:

String str = "abc..,df.,";
String alphaNumericStr = str.replaceAll("[^a-zA-Z0-9]", "");
System.out.println(alphaNumericStr); // Prints > abcdf

while(count < alphaNumericStr.length()) { // using alphaNumericStr instead of Letter
    ...

另一種方法 (我希望這樣):@KeshavPandey的答案

如果要模擬數字小鍵盤,則可能應該使用blank space並將字符串附加0

大多數手機的數字0鍵上都有blank space

case ' ':
    Number += "0";
    count++;
    break;

以下代碼段可能會對您有所幫助。 我剛剛在上面優化了您的代碼。 您可以使用String API用數字替換字符,而不是逐個字符地迭代字符串字符並生成數字。

Scanner console = new Scanner(System.in);    
String str = console.next();

// To trim the leading and trailing white spaces
str = str.trim();

// To remove the white spaces in between the string
while (str.contains(" ")) {
    str = str.replaceAll(" ", "");
}

// To replace the letters with numbers
str = str.replaceAll("[a-cA-C]", "2").replaceAll("[d-fD-F]", "3")
    .replaceAll("[g-iG-I]", "4").replaceAll("[j-lJ-L]", "5")
    .replaceAll("[m-oM-O]", "6").replaceAll("[p-sP-S]", "7")
    .replaceAll("[t-vT-V]", "8").replaceAll("[w-zW-Z]", "9");

System.out.println(str);

如果要在3位數字后插入“-”,則可以在上述轉換后使用以下片段代碼。

StringBuffer buff = new StringBuffer(str);
buff.insert(3, "-");

System.out.println(buff.toString());

您可以僅添加一條額外的case語句來檢查要避免的字符。 然后,當此操作被擊中時,“什么也不做”

在只想跳過空格的情況下,可以添加特定於''字符的其他大小寫和/或默認大小寫;

case ' ':
default:
    break;

暫無
暫無

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

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