在 C# 中提取字符串的特定部分

Extract particular part of string in C#

N\r\n XXXX XXXX -XXXX XXXXX 45 108 10 N\r\nJ\r\nT\r\n***(10) 5 2738372 827172672 2*** X 345 145/00\r\nXxxxxx:\r\nXxxxxx \r\nXxxxxx \r\nXXXXX 21 \r\nXXXXXX 2´t Xxx

我有这个来自 PDF 的字符串 我只想要那些提取特定部分并显示它

提前致谢

如果第 4 行的长度始终相同,那么应该这样做:

const int TextLength = 26; // length of text you want
// text is the string that contains the data.

// get the 4th line
string line = text.Split(new[]{"\r\n"}, StringSplitOptions.None)[3];

// and extract the text you want
string foo = line.SubString(TextLength);

这只是 Jim 提供的解决方案的替代方案。您可以使用 Regular Expressions 来获得相同的结果。 (这当然是在预期位数不变的情况下。否则,您需要稍微调整模式以适应)

源字符串所在位置:

N\r\n XXXX XXXX -XXXX XXXXX 45 108 10 N\r\nJ\r\nT\r\n***(10) 5 2738372 827172672 2*** X 345 145/00\r\nXxxxxx:\r\nXxxxxx \r\nXxxxxx \r\nXXXXX 21 \r\nXXXXXX 2´t Xxx

使用模式:

\(\d{2}\)\s\d\s\d{7}\s\d{9}\s\d

可以这样解释:

\(\d{2}\)  -  Where the string starts with ( and contains 2 numeric digits followed by )
\s\d\      -  and is followed by a space and a numeric digit
\s\d{7}    -  and is then followed by a space and 7 numeric digits
\s\d{9}    -  and is then followed by a space and 9 numeric digits
\s\d       -  and finally ending with a space and a single numeric digit

您可以使用:

public static string ParseValue(string sourceStr)
{
    string pattern = @"\(\d{2}\)\s\d\s\d{7}\s\d{9}\s\d";
    return System.Text.RegularExpressions.Regex.Match(sourceStr, pattern).Value;
}

这会给你以下结果:

(10) 5 2738372 827172672 2