在 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
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