indexOf(“\ n”)返回0

时间:2015-01-07 10:57:59

标签: java return indexof

假设我有一个字符串看起来像这样:

  

ASDF

     

QWER

在这两个单词之间是一个换行符(“\n”)。我想使用qwer提取indexOf("\n"),但它会返回0.我的代码在这里:

dataStringTot = (dataStringTot.concat("\n")).concat(dataString); // add line wrap
            Log.d(TAG, String.valueOf(dataStringTot.indexOf("\n"))); // returning 0

问题出在哪里?

(我在屏幕上打印出字符串,这两者之间确实有一个换行符)

3 个答案:

答案 0 :(得分:1)

也许你打算写:

dataStringTot = (dataString.concat("\n")).concat(dataString);

在原始代码中,您将“\ n”连接到可能为空的dataStringTot(您没有显示初始化它的位置),因此换行符是字符串的第一个字符。

答案 1 :(得分:1)

documentation非常明确:

  

返回:

     

从指定索引处开始的指定子字符串第一次出现的索引,如果没有这种情况,则返回-1。

此处返回

0,因此您的字符串必须以\n

开头

尝试trim()

dataStringTot = (dataStringTot.concat("\n")).concat(dataString);
Log.d(TAG, String.valueOf(dataStringTot.trim().indexOf("\n")));

答案 2 :(得分:1)

如果dataStringTot.indexOf("\n")返回零,则dataStringTot的第一个字符必须是换行符。

在您的代码段的上下文中,在您开始之前从新行开始指向dataStringTot

在您开始之前,dataStringTot可以是""


对于它的价值,你可以写得更整洁:

dataStringTot = dataStringTot + "\n" + dataString;