2015-07-30 6 views
-1

Итак, я разработал этот код для преобразования слова в телефонные номера и как его кодировать, чтобы игнорировать введенные пробелы при отображении результата?Как игнорировать специальные символы и пробелы в строке?

Так что я имел в виду, чтобы позволить пользователю вводить пробелы между словами, но не отражается в результате.

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

    } 


    }} 
+0

Домашнее задание? ...... – ADTC

+0

Btv, [Character.toUpperCase()] (http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html # toUpperCase% 28char% 29) .. теперь упростите свой код. – ADTC

+0

добавьте случай по умолчанию и ничего не делайте в этом ... но если вы хотите, чтобы этот пользователь не вводил его, перейдите на метод проверки массива байтов или проверите по символу мудрый ... Было бы легче понять вашу проблему, если бы вы сказали ваш вход и ожидаемый результат – CoderNeji

ответ

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

привет, я пробовал этот метод, но то, что он делает, просто игнорирует все символы, которые я вводил после пробела. – toobadgoo

+0

, например. call home - он отобразит только вызов, который составляет 225-5. «Дом» не будет преобразован. – toobadgoo

+0

извините, этот работает –

-1

Вы можете просто добавить дополнительную инструкцию кейса для проверки символов, которых вы хотите избежать. Затем «ничего не делать», когда это ударит ...

В вашем случае, просто чтобы пропустить пробелы, вы можете добавить дополнительный регистр, характерный для символа '' и/или случай по умолчанию;

case ' ': 
default: 
    break; 
+0

Обязательно попробуй! Спасибо! – toobadgoo

+0

Привет, я пробовал это, но он только преобразовал символы перед пространством. например позвоните домой: 225-5 – toobadgoo

+0

дом, который после пробела также пропущен. – toobadgoo

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]+"); 
} 
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 ничего не включен в ваш коммутатор, он не добавит к вашему счету или номеру.

0

Вы можете заменить символы из своей строки, которые не являются буквенно-числовыми, пустыми (""), а затем выполнить обработку с использованием этой строки. Вы можете использовать метод String.replaceAll().

Заменяет каждую подстроку этой строки, которая соответствует данному регулярному выражению с указанной заменой.

Для Eg:

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

0

Если вы пытаетесь имитировать цифровую клавиатуру, то вы, вероятно, следует использовать blank space и добавить вашу строку с 0.

Большинство мобильных телефонов имеют blank space на номер 0 ключ.

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

Следующий фрагмент кода может вам помочь. Я просто оптимизировал ваш код выше. Вы можете заменить символы цифрами с помощью API-интерфейсов String вместо повторения символа строки символом и создания числа.

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()); 
Смежные вопросы