-2 c# text-files
当我运行此代码时,lineLength 返回为 -1,当我希望换行符位于文本行字符串的末尾并返回一个相应的值时。如果 \n 字符实际上位于行首,那么如何找到该行中最后一个字符的值?
我尝试通过将 lineLength 设置为 line.Length 来使用 .length 但是当我将 lineLength 作为 line.substring 中的长度参数时,我收到一条错误消息:
“索引和长度必须指向字符串中的某个位置”
int found;
int lineLength;
string[] lines = System.IO.File.ReadAllLines(
@"C:\Program Files\C# Projects\Password Validation\UserAndPWSystem2\UPInfo.txt");
foreach (string line in lines)
{
if (line.Contains("user number : "))
{
found = line.IndexOf(":");
lineLength = line.IndexOf('\n');
Console.WriteLine(lineLength);
//Console.WriteLine(line.Substring(found + 2,lineLength));
}
}
Run Code Online (Sandbox Code Playgroud)
来自以下文档ReadAllLines:
此方法打开一个文件,读取文件的每一行,然后将每一行添加为字符串数组的一个元素。然后关闭文件。一行被定义为一个字符序列,后面跟着一个回车('\r')、一个换行('\n'),或者一个回车紧跟一个换行。结果字符串不包含终止回车和/或换行符。
ReadAllLines已经很好地为您删除了所有新行字符,并将每一行作为返回数组中的一个元素。这就是为什么IndexOf返回 -1 - 表示字符串中没有换行符。
要获得行的长度,您无需查找换行符的位置。只需使用line.Length:
lineLength = line.Length;
Run Code Online (Sandbox Code Playgroud)
我尝试通过将 lineLength 设置为 line.Length 来使用 .length 但是当我将 lineLength 作为 line.substring 中的长度参数时,我收到一条错误消息,说“索引和长度必须指代字符串中的某个位置”?
那是因为这不是Substring工作方式。的第二个参数Substring是你想要的子串的长度,而不是结束索引。
在这种情况下,如果您想从头到尾进行子串化found + 2,您只需调用 的单参数重载Substring:
line.Substring(found + 2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |