查找字符串中一行的最后一个字符

Finding the last character of of a line in a String

我有一个程序可以读取文件的内容并将其作为字符串。字符串输入如下所示:

Age: 0-11,25203,18,54% ~
Age: 12-19,26722,35,68% ~
Age: 20-39,28427,46,72%. ~
Note: Each ICU admission is also included in the total number of hospitalization.,,, ~

其中每个“~”是一个换行符。

我希望将每条年龄线放入一个字符串数组中。我设法在我放入计数器的字符串中找到 '\n' 的数量。所以,我试着做

for(int i=0; i<counter;i++){
array[i]=input.substring(0, input.indexOf("\n")); //Puts the first line of the String in the array
input=input.replaceFirst(array[i],""); //To remove the first line of the String

但这不起作用,因为字符串不会比第二行更远。因此,“~”不等于 '\n',因为一旦我的字符串被截断为

,我就找不到 '\n'
Age: 12-19,26722,35,68% ~
Age: 20-39,28427,46,72%. ~
Note: Each ICU admission is also included in the total number of hospitalization.,,, ~

此外,一旦字符串被切碎,我发现了这种奇怪的行为:

System.out.println("A: "+input.contains("\n"));
System.out.println("B "+input.indexOf('\n'));

渲染输出:

A: true
B: 0

所以,我很困惑,因为“\n”应该在我的行尾而不是索引 0。因此,我认为我不能进一步切断我的字符串,因为它找到了“\n " 在 0.

快速说明:我不能在该行中找到确切的字符数并在之后将其截断,因为它只是一个示例文件并且该行的长度可能会有所不同。

substring 的第二个参数是子字符串的结尾,独占。 substring(a,b) 获取从索引 a 到索引 b-1 的子字符串。

示例:

"abcd".substring(0,1) -> "a"
"abcd".substring(1,3) -> "bc"

这意味着对于您的示例,您正在删除所有内容 除了 换行符,因此第二次循环运行时,输入的第一个字符是换行符。你得到 indexOf('\n') = 0,没有任何反应。

要在数组[i]中包含换行符,你必须做

array[i]=input.substring(0, input.indexOf("\n") + 1);