c # Используйте формат String для чтения строки в объект - PullRequest
1 голос
/ 01 сентября 2011

Я создал строку, используя

String.Format(IPAddressRangeFormat, StartIP, EndIP);

Теперь мне нужно прочитать строку обратно в объекты StartIP и EndIP.

Какой самый простой способ сделать это в c #?

благодарив, Li.

Ответы [ 4 ]

4 голосов
/ 01 сентября 2011

Нет простого способа сделать это, так как обратный тип String. Формат не детерминированный.

Оба:

String.Format( "{0}{1}", "123", "456" )
String.Format( "{0}{1}", "12", "3456" )

дает вам 123456.Машина не будет просто угадывать, какой вам нужен.

Однако есть более хитрый способ сделать это, у вас есть регулярные выражения.

Вы можете использовать выражение:

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
2 голосов
/ 01 сентября 2011

Вероятно, лучший способ иметь отдельный тип, такой как IPRange, где у вас будет 2 IP-адреса в конструкторе и переопределить ToString(). Разобрав, возможно, потребуется реализовать собственную логику, скажем, статический Parse(string) член.

0 голосов
/ 01 сентября 2011

В зависимости от вашего форматирования для IPAddressRangeFormat, используйте ToString () ... затем string.Split(':') ... заменив ':' на то, что вы используете char.

Мне действительно нужно увидеть ваш формат для IPAddressRangeFormat, чтобы дать лучший ответ.

0 голосов
/ 01 сентября 2011

То, что вы хотите сделать, называется Парсинг, и это не может быть выполнено методом String.Format.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...