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

时间:2015-07-30 06:24:37

标签: java regex

所以我开发了这个代码来将一个单词转换为电话号码,我如何编码以忽略显示结果时输入的空格?

所以我的意思是允许用户在单词之间输入空格,但不会反映在结果中。

 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 );

   }


   }}

7 个答案:

答案 0 :(得分:3)

要忽略空格,您可以使用以下内容:

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]+");
}

答案 1 :(得分:1)

  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 = "";

答案 2 :(得分:0)

 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 );

   }


   }}

通过在您的开关案例中使用默认值,您可以忽略所有其他响应。因此,如果y键入了未包含在您的开关中的任何内容,则它不会添加到您的计数或数字中。

答案 3 :(得分:0)

您可以使用空白(<p>9+555</p>)替换字符串中非字母数字的字符,然后使用该字符串进行处理。您可以使用String.replaceAll()方法。

  

将此字符串中与给定正则表达式匹配的每个子字符串替换为给定的替换。

例如:

""

另一种方法(我更喜欢这个):请参阅@KeshavPandey的答案

答案 4 :(得分:0)

如果您尝试模拟数字小键盘,那么您应该使用blank space并将字符串附加0

大多数手机号码blank space都有0

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

答案 5 :(得分:0)

以下代码可能会对您有所帮助。 我刚刚优化了上面的代码。您可以使用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());

答案 6 :(得分:-1)

您可以添加一个额外的case语句来检查您要避免的字符。然后,&#34;什么都不做&#34;当它被击中时......

在您想要跳过空格的情况下,您可以添加一个特定于&#39; &#39;字符和/或默认情况;

case ' ':
default:
    break;
相关问题