如何在c#中获得字符串中特定文本的行号
本文关键字:文本 字符串 | 更新日期: 2023-09-27 18:17:29
我有一个字符串,其中包含这么多行。现在,根据我的要求,我必须在这个字符串中搜索子字符串(文本),并找出这个子字符串(文本)在字符串中存在的行号。
一旦我将得到行号,我必须读取该行,并了解其中哪些内容是字符,哪些是整数或数字。
这是我用来读取特定行的代码…
private static string ReadLine(string text, int lineNumber)
{
var reader = new StringReader(text);
string line;
int currentLineNumber = 0;
do
{
currentLineNumber += 1;
line = reader.ReadLine();
}
while (line != null && currentLineNumber < lineNumber);
return (currentLineNumber == lineNumber) ? line : string.Empty;
}
但是如何搜索包含特定文本(子字符串)的行号?
我来简化一下。如何获得当前特定文本的行数c#
中的字符串
那么你可以使用这个方法:
public static int GetLineNumber(string text, string lineToFind, StringComparison comparison = StringComparison.CurrentCulture)
{
int lineNum = 0;
using (StringReader reader = new StringReader(text))
{
string line;
while ((line = reader.ReadLine()) != null)
{
lineNum++;
if(line.Equals(lineToFind, comparison))
return lineNum;
}
}
return -1;
}
我知道这个问题已经解决了,但我想分享一个解决问题的答案,因为我无法让它适用于简单的事情。代码只返回它找到给定字符串的一部分的行号,要获得准确的行号只需替换"Contains"与"Equals".
public int GetLineNumber(string lineToFind) {
int lineNum = 0;
string line;
System.IO.StreamReader file = new System.IO.StreamReader("c:''test.txt");
while ((line = file.ReadLine()) != null) {
lineNum++;
if (line.Contains(lineToFind)) {
return lineNum;
}
}
file.Close();
return -1;
}