假设我有一个字符串看起来像这样:
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
问题出在哪里?
(我在屏幕上打印出字符串,这两者之间确实有一个换行符)
答案 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;