您好我的应用程序有问题我想从字符串中获取字符串的一部分。情况是我有一个名为stringData
的字符串变量,它存储以下值:
IP Address Hardware Address Lease expiration Type
192.168.1.2 00-23-8B-87-9A-6B Mon Jan 02 01:14:00 2006 Dynamic
192.168.1.3 F8-F7-D3-00-03-80 Mon Jan 02 01:14:00 2006 Dynamic
192.168.1.4 F8-F7-D3-00-9C-C4 Mon Jan 02 01:14:00 2006 Dynamic
192.168.1.5 F0-DE-F1-33-9C-C4 Mon Jan 02 01:14:00 2006 Dynamic
我只想从Hardware Address
开始F8-F7-D3-00
。我现在使用substring
方法,但我只获得一个匹配的硬件地址,但可能有多个字符串,如上所述,我想要所有这些。我正在使用C#。
任何帮助都会非常值得赞赏。
答案 0 :(得分:1)
试试这个:
string pattern = @"(F8-F7-D3-00\S+)";
string input = "IP Address Hardware Address Lease expiration Type\n"+
"192.168.1.2 00-23-8B-87-9A-6B Mon Jan 02 01:14:00 2006 Dynamic\n"+
"192.168.1.3 F8-F7-D3-00-03-80 Mon Jan 02 01:14:00 2006 Dynamic \n"+
"192.168.1.4 F8-F7-D3-00-9C-C4 Mon Jan 02 01:14:00 2006 Dynamic \n"+
"192.168.1.5 F0-DE-F1-33-9C-C4 Mon Jan 02 01:14:00 2006 Dynamic";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine("Hardware Address: {0}", match.Groups[1].Value);
}
答案 1 :(得分:0)
首先将字符串拆分为单独的行:
string[] linesep = new string[] {"\r\n"};
string[] dataLines = stringData .Split(linesep, StringSplitOptions.RemoveEmptyEntries);
然后将Substring方法应用于每个:
foreach (line in dataLines)
{
if (line.Contains(yourIPstring)
// .. do your stuff
}
您可能需要更改行分隔符。
答案 2 :(得分:0)
您可以轻松使用正则表达式
var file = File.ReadAllText(@"....\Input.txt");
Regex r = new Regex("F8-F7-D3-00(-[0-9A-F]{2}){2}");
var matches = r.Matches(file);
foreach (Match m in matches)
{
Console.WriteLine(m.Value);
}
答案 3 :(得分:0)
如果字符串包含标签,您可以将其拆分为' / t' (水平标签)。
string hardwareAddresses = stringData.split('/t').ToList().Where((item, index) => index % 4 == 1);
hardwareAddresses将包含一个硬件地址数组