查找字符串中一行的最后一个字符
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);
我有一个程序可以读取文件的内容并将其作为字符串。字符串输入如下所示:
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);