C# 在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。我正在努力理解如何将这两组数字提取出来,并将它们放入不同的字符串中供以后使用 有什么想法吗?您的字符串看起来像是被以、、分隔的部分分解,所以我要做的
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];