Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中拆分和剪切字符串_C#_String_Split - Fatal编程技术网

C# 在C中拆分和剪切字符串

C# 在C中拆分和剪切字符串,c#,string,split,C#,String,Split,对C语言来说是相当陌生的。我有一个字符串,如下所示: Internet Protocol Version 4, Src: 192.168.1.204 (192.168.1.204), Dst: 162.159.242.165 (162.159.242.165) 其中包含两条数据,分别为192.168.1.204和162.159.242.165。我正在努力理解如何将这两组数字提取出来,并将它们放入不同的字符串中供以后使用 有什么想法吗?您的字符串看起来像是被以、、分隔的部分分解,所以我要做的

对C语言来说是相当陌生的。我有一个字符串,如下所示:

  Internet Protocol Version 4, Src: 192.168.1.204 (192.168.1.204), Dst: 162.159.242.165 (162.159.242.165)
其中包含两条数据,分别为192.168.1.204和162.159.242.165。我正在努力理解如何将这两组数字提取出来,并将它们放入不同的字符串中供以后使用


有什么想法吗?

您的字符串看起来像是被以、、分隔的部分分解,所以我要做的第一件事是将它分解为这些部分

string[] sections = str.Split(',');
看起来这些部分被分解为一个参数名和一个参数值,它们之间用:。因此,我将迭代您的部分,并将其分解为名称和值

string name = sections[i].Split(':')[0];
string value = sections[i].Split(':')[1];
现在,您的值不仅仅是一个IP地址,所以您可以使用正则表达式提取第一个看起来像IP地址的内容

var address = Regex.Match(value, @"\d+\.\d+\.\d+\.\d+").Value;
您还可以使用名称字符串来确定哪些部分表示Src,哪些部分表示Dst

现在小心点。我给你的正则表达式将匹配无效的IP,比如300.19028.38.1如果你害怕匹配非IP地址的东西,你可以比我花更多的精力来获得更好的正则表达式


此外,如果字符串中有额外的unspeced或:,则此逻辑将被视为无效。

以下是使用Regex执行此操作的方法:

public List<string> getIP(string myString)
    {
        List<string> myString = new List<string>();
        // use Regex.Matches to get all the string parts that match for an IP adress
        MatchCollection matchs = Regex.Matches(input, @"\d+\.\d+\.\d+\.\d+", RegexOptions.IgnoreCase);

        //collect all the strings that matches
        foreach (Match match in matchs)
        {
            output.Add(match.Value);
        }

        //finaly! return the result as a list
        return output;
    }
您只需将字符串输入给函数,它将返回其中的所有ip地址 您可以使用它们的索引访问。
希望能有所帮助。

到目前为止,您尝试过什么吗?我想,请查看string.Split和string.substring正则表达式的文档。获取的索引和获取till。简单地说,如果知道字符串总是这样,只有IP地址发生变化,那么就不需要正则表达式。您可以只使用var arr=str.Split;var ip1=arr[5];var ip2=arr[8];