我有一個程式可以讀取檔案的內容并將其作為字串。字串輸入如下所示:
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。
快速說明:我不允許在行中找到確切的字符數并在之后將其截斷,因為它只是一個示例檔案,并且行的長度可能會有所不同。
uj5u.com熱心網友回復:
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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/443798.html
上一篇:如何從包含宏名稱的字串中訪問宏
下一篇:在DLL中動態選擇字串中的字串列
