indexOf("\n") 返回 0

indexOf("\n") returning 0

假设我有一个如下所示的字符串:

asdf

qwer

这两个词之间有一个换行符 ("\n")。我想使用 indexOf("\n") 提取 qwer,但它 returns 我 0。我的代码在这里:

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

问题出在哪里?

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

也许你打算写:

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

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

documentation 很清楚:

Returns:

the index of the first occurrence of the specified substring, starting at the specified index, or -1 if there is no such occurrence.

这里返回

0 所以你的字符串必须以 \n

开头

尝试 trim() :

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

如果dataStringTot.indexOf("\n") returns为零,那么dataStringTot的第一个字符必须是换行符。

在您的代码段的上下文中,这指向 dataStringTot 在您开始之前以换行符开头

或者 dataStringTot 可以在您开始之前 ""


对于它的价值,你可以更简洁地写成:

dataStringTot = dataStringTot + "\n" + dataString;