2013-12-19 2 views
1

Итак, у меня есть EditText в моем приложении, где пользователь вводит имя в aswer. Моя проблема заключается в том, что когда я проверяю ввод и использую условное выражение, чтобы проверить, является ли он правильным ответом, он становится сложным. Вот мой код, так что вы получите лучшее понимание моего вопросаУпростить условное

if (cuenta == 0) { 
    if (inputbox.getText().toString().equals("Ottawa")) { 
     resultadolabel.setText("Correcto");} 
    else if (inputbox.getText().toString().equals("Ottawa ")) { 
     resultadolabel.setText("Correcto");} 
    else if (inputbox.getText().toString().equals("ottawa")) { 
     resultadolabel.setText("Correcto");} 
    else if (inputbox.getText().toString().equals("ottawa ")) { 
     resultadolabel.setText("Correcto");} 
    else {resultadolabel.setText("Respuesta correcta: Ottawa");} 
} 

Как вы можете видеть, я попросить столицы Канады, но я хочу, чтобы пользователь, чтобы иметь возможность написать текст в 4-х различных способах (капитал буква w/space на конце, нижний регистр без места в конце и т. д.). Это, где мой вопрос возникает, есть способ сделать что-то вроде «если (это условие или это другое условие или это другое условие и т. Д.)

Мне действительно нужен способ упростить мой код, потому что он получите действительно долго специально со странами с акцентом и прочее

ответ

3

вы можете использовать equalsIgnoreCase() и trim(), например:.

if(inputbox.getText().toString().trim().equalsIgnoreCase("Ottawa")){ 
    resultadolabel.setText("Correcto"); 
} 
+0

насчет акцентов? –

+0

Что вы подразумеваете под акцентами? который акцентирует? можете ли вы привести пример? – Baby

+0

México (é). Не уверен, что «акцент» - настоящее слово на английском, я говорю по-испански, и я действительно не знаю, является ли это правильным переводом. –

0

вы можете просто использовать toLowerCase() и trim()

if (inputbox.getText().toString().toLowerCase().trim().equals("ottawa")) 
0

Вот что я хотел бы сделать:

if (inputbox.getText().trim().toUpperCase().equals("OTTAWA")) { ... 

Это, очевидно, также позволит перестановки, таким как «Оттава» и «Оттава», но вы действительно не можете позволить себе, чтобы проверить все перестановки по одному. Возможно, ввести правило, что первая буква должна быть капитализирована?

Обратите внимание, что вам не нужно toString() возвращение getText() - это уже строка.

0
public static void main(String[] args) { 
     String s="Ottawa "; 
     s=s.trim(); 
     if(s.equalsIgnoreCase("ottawa")) 
     { 
      resultadolabel.setText("Correcto"); 
     } 
      else {resultadolabel.setText("Respuesta correcta: Ottawa");} 
    } 
0

Try состояние с trim() который возвращает копию строки, с передними и задними пробелами опущены. и используйте equalsIgnoreCase(), который игнорирует соображения случая.

if (inputbox.getText().toString().trim().equalsIgnoreCase("ottawa")) { 
        resultadolabel.setText("Correcto"); 
} else {resultadolabel.setText("Respuesta correcta: Ottawa");} 
0

Использование регулярных выражений:

if(inputbox.getText().toString().matches("^[oO]ttawa\\s?")){ 
    resultadolabel.setText("Correcto"); 
} else{ 
    resultadolabel.setText("Respuesta correcta: Ottawa"); 
} 
Смежные вопросы