流读取到特定字符

时间:2016-02-25 18:56:10

标签: c# regex

我需要读取包含以下内容的txt文件 123123; 192.168.1.1; 321321; 192.168.2.1; 我想将文本读取到特定字符,例如“;” 并将其分配给变量和标签,或在代码中使用它

经过长时间的搜索......

第一种方式

  StreamReader office_list = new StreamReader(@"c:\office_list.txt");

var x = office_list.ToString();
var y = Regex.Match(x, @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b");
Current_Office.Text = y.Value;

但是没有返回任何内容..而我找到的第二种方式

string [] cur_office = Regex.Split(office_list.ToString(), ";");
           foreach(string x in cur_office)
        {
            Current_Office.Text = x;
        }

但是返回System.IO.StreamReader ......第三种方式如下

Current_Office.Text = Regex.Match(office_list.ToString(), @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b");

错误是 错误1无法将类型'System.Text.RegularExpressions.Match'隐式转换为'string'C:\ Users \ user \ documents \ visual studio 2012 \ Projects \ WindowsFormsApplication1 \ WindowsFormsApplication1 \ Form1.cs 23 35 WindowsFormsApplication1

任何人都可以提出建议,或者指出我最好的方法来捕获包含上述示例1000的ips表单文本文件吗?

2 个答案:

答案 0 :(得分:2)

我认为你的第一行是错误的。

var x = office_list.ToString();

是StreamReader类型的office_list吗?

var x = office_list.ReadLine();

string [] cur_office = Regex.Split(x, ";");
           foreach(string x in cur_office)
        {
            Current_Office.Text = x;
        }

答案 1 :(得分:0)

您可以通过以下方式获取所有IP地址的列表:

using (var stream = new StreamReader(@"your path here"))
{
    var ipAddresses = stream
        .ReadToEnd()
        .Split(';')
        .Select(ip => ip.Trim()); // not sure if this one is needed, you can try without
    foreach (var ip in ipAddresses)
    {
        // do what you will with the ips
    }
}