equal () и equalsIgnoreCase () возвращают false для одинаковых строк - PullRequest
13 голосов
/ 18 ноября 2010

Я работаю с Eclipse IDE (версия: 3.4.2) на Mac и столкнулся со следующей проблемой.

При сравнении строк с использованием методов equal () или equalsIgnoreCase () я получаю false, даже если строки равны Например, приведенный ниже код рассматривает следующее условие как ложное, даже если values ​​[0] = "debug_mode"

if (values[0].equalsIgnoreCase("debug_mode")) 
    debug_mode = true;

, который является частью следующего цикла:

String value = dis.readLine();
String values[] = value.trim().split("=");
if (values.length >= 2)
{
    Config.prnt_dbg_msg(values[0] + "\t" + values[1]);
    if (values[0].equalsIgnoreCase("debug_mode")) 
        debug_mode = isTrue(values[1]);
    if (values[0].equalsIgnoreCase("debug_query_parsing")) 
        debug_query_parsing = isTrue(values[1]);
    if (values[0].equalsIgnoreCase("username")) 
        Connection_Manager.alterAccessParameters(values[1], null, null);
    if (values[0].equalsIgnoreCase("password")) 
        Connection_Manager.alterAccessParameters(null, values[1], null);
if (values[0].equalsIgnoreCase("database")) 
        Connection_Manager.alterAccessParameters(null, null, values[1]);
    if (values[0].equalsIgnoreCase("allow_duplicate_entries")) 
        allow_duplicate_entries = isTrue(values[1]);
}                         

Я пытался использовать value[0].equal("debug_mode") и получил тот же результат. У кого-нибудь есть идеи, почему?

Ответы [ 11 ]

0 голосов
/ 13 апреля 2013

Вы можете легко столкнуться с этим на Android с помощью SpannableString, , как, например, когда в TextView включено автоподключение , например:

// Outputs "a string"
Log.d("test", "TextView text: " + textView.getText());

// Outputs "a string"
Log.d("test", "Text to match: " + "a string");

if( textView.getText().equals("a string") )
{
    // Won't get here
}

Вы можете сделать быстрый тест, чтобы увидеть, какую строку возвращает textView.getText (), выполнив:

Log.d("test", "String class: " + textView.getText().getClass().getSimpleName());

Если действительно у вас есть SpannableString, вам просто нужно вызвать toString () для него, чтобы условие if было выполнено:

if( textView.getText().toString().equals("a string") )
{
    // We're here
}
...