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;
假设我有一个如下所示的字符串:
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;