怎么样才能把某些零散的字符串组成我想要的字符串
我现在手头上有形如这样的一组字符串
00-01-08 (hex)AVLAB Technology, Inc.
000108 (base 16)AVLAB Technology, Inc.
3F-1, No. 134, Sec. 3
Chung Shin Road
Hsin Tien, Taipei
TAIWAN, PROVINCE OF CHINA
我想给整理成
m_Companies.Add("00-01-08", new PhysAddressCompany("00-01-08", "000108", "AVLAB Technology, Inc.", "3F-1, No. 134, Sec. 3 Chung Shin Road Hsin Tien, Taipei TAIWAN, PROVINCE OF CHINA"));
m_Companies.Add("00-01-09", new PhysAddressCompany("00-01-09", "000109", "Nagano Japan Radio Co., Ltd.", ""));
m_Companies.Add("00-01-01", new PhysAddressCompany("00-01-01", "000101", "PRIVATE", ""));
string input = @"00-01-08 (hex) AVLAB Technology, Inc.
000108 (base 16) AVLAB Technology, Inc.
3F-1, No. 134, Sec. 3
Chung Shin Road
Hsin Tien, Taipei
TAIWAN, PROVINCE OF CHINA
00-01-09 (hex) Nagano Japan Radio Co., Ltd.
000109 (base 16) Nagano Japan Radio Co., Ltd.
Nagano Japan Radio Co., Ltd.
00-01-01 (hex) PRIVATE
000101 (base 16)
";
string pattern = @"(?i)(\d+-\d+-\d+)\s*?\([^()]*?\)\s*?([^\n]*?)\s*?(\d+)\s*?\([^()]*?\)\s*?[^\n]*?\s*?\n\s*?(\s*?(?<v>[^\n]*?)\s*?\n?\s*?)*?(?=\d+-
[解决办法]
$)";
var result = Regex.Matches(input, pattern).OfType<Match>().Select(a => new
{
v1=a.Groups[1].Value,
v2=a.Groups[2].Value,
v3=a.Groups[3].Value,
v4 = string.Join(" ", a.Groups["v"].Captures.OfType<Capture>().Select(b => b.Value))
});
/*
+[0]{ v1 = "00-01-08", v2 = " AVLAB Technology, Inc.", v3 = "000108", v4 = " 3 F - 1 , N o . 1 3 4 , S e c . 3 C h u n g S h i n R o a d H s i n T i e n , T a i p e i T A I W A N , P R O V I N C E O F C H I N A " }<Anonymous Type>
+[1]{ v1 = "00-01-09", v2 = " Nagano Japan Radio Co., Ltd.", v3 = "000109", v4 = " N a g a n o J a p a n R a d i o C o . , L t d . " }<Anonymous Type>
+[2]{ v1 = "00-01-01", v2 = " PRIVATE", v3 = "000101", v4 = "" }<Anonymous Type>
*/
string Url = "http://standards.ieee.org/develop/regauth/oui/oui.txt";
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(Url);
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("utf-8")))
{
string txt = sr.ReadToEnd();
string pattern = @"(?i)([\da-z]+-[\da-z]+-[\da-z]+)\s*?\([^()]*?\)\s*?([^\n]*?)\s*?([\da-z]+)\s*?\([^()]*?\)\s*?[^\n]*?\s*?\n\s*?(\s*?(?<v>[^\n]*?)\s*?\n?\s*?)*?(?=\n
[解决办法]
$)";
//string pattern = @"(?i)(\d+-\d+-\d+)\s*?\([^()]*?\)\s*?([^\n]*?)\s*?(\d+)\s*?\([^()]*?\)\s*?[^\n]*?\s*?\n\s*?(\s*?(?<v>[^\n]*?)\s*?\n?\s*?)*?(?=\d+-
[解决办法]
$)";
var result = Regex.Matches(txt, pattern).OfType<Match>().Select(a => new
{
v1 = a.Groups[1].Value,
v2 = a.Groups[2].Value,
v3 = a.Groups[3].Value,
v4 = string.Join(" ", a.Groups["v"].Captures.OfType<Capture>().Select(b => b.Value))
});
}
}