我使用
创建了一个字符串String.Format(IPAddressRangeFormat, StartIP, EndIP);
现在我需要将字符串读回StartIP和EndIP对象。
在c#中最简单的方法是什么?
谢谢, 李。
答案 0 :(得分:4)
没有简单的方法可以做到这一点,因为String.Format的反向不是确定性的。
两者:
String.Format( "{0}{1}", "123", "456" )
String.Format( "{0}{1}", "12", "3456" )
给你123456
。机器不会猜测你想要哪一个。
然而,有一种比较棘手的方法,你有正则表达式。
如果你有:
String.Format ( "{0}-{1}", StartIP, EndIP);
您可以使用表达式:
var matches = Regex.Match ( String.Format ( "{0}-{1}", "127.0.0.1", "192.168.0.1"), "(?<startIP>.*)-(?<endIP>.*)" );
Console.WriteLine ( matches.Groups["startIP"].Value ); // 127.0.0.1
Console.WriteLine ( matches.Groups["endIP"].Value ); // 192.168.0.1
答案 1 :(得分:2)
可能是拥有像IPRange
这样的单独类型的最佳方式,其中您将在costructor中拥有2个IP并覆盖ToString()
。解析你可能需要在静态Parse(string)
成员中实现自定义逻辑。
答案 2 :(得分:0)
您要做的事情称为Parsing,它不能由String.Format方法执行。
答案 3 :(得分:0)
根据您IPAddressRangeFormat
的格式,使用ToString()...然后string.Split(':')
...将“:”替换为您正在使用的char
。
我真的需要看到IPAddressRangeFormat
的格式才能提供更好的答案。