2009-12-17 63 views
0

我想使用正則表達式來標識字符串中的某些單詞。VS2008 C#:正則表達式和標識某些單詞

例如:

"bla bla bla | First Name = John Doe | City = Denver | bla bla bla | State = CA | bla bla bla" 

在上述字符串,即|我想分析出名字,城市和州的內容,並將它們存儲在散列表中的某些地方。

我該如何去做呢?我認爲最好的方法是使用正則表達式。

+0

但後來我將如何能夠捕捉鍵值對,例如City,State,FirstName等。 – 2009-12-17 17:29:05

回答

0

我會使用string.Split('|')和string.IndexOf(「=」)來解析元素。它肯定比正則表達式更直接。

0

如果您的數據一致(即始終使用|和=作爲分隔符),則可以使用字符串split方法在數組中獲取結果。

4

只是使用拆分不會更容易嗎?

例子:

var test = "bla bla bla | First Name = John Doe | City = Denver | bla bla bla | State = CA | bla bla bla"; 
var sections = test.Split('|'); 
var firstName = sections[1].Split('=')[1].Trim(); 
var city= sections[2].Split('=')[1].Trim(); 
var state= sections[4].Split('=')[1].Trim(); 
1

使用Split()功能:

public class SplitTest { 
    public static void Main() { 

     string words = "This is a list of words, with: a bit of punctuation" + 
         "\tand a tab character."; 

     string [] split = words.Split(new Char [] {' ', ',', '.', ':', '\t' }); 

     foreach (string s in split) { 

      if (s.Trim() != "") 
       Console.WriteLine(s); 
     } 
    } 
} 
// The example displays the following output to the console: 
//  This 
//  is 
//  a 
//  list 
//  of 
//  words 
//  with 
//  a 
//  bit 
//  of 
//  punctuation 
//  and 
//  a 
//  tab 
//  character 
1

使用命名組是非常簡單的...

// named groups are very cool for this... 
    public static Regex regex = new Regex("\\|(?:\\s*)(?<key>(\\w+)(\\s*))=(?<value>[^|]+)", RegexOptions.CultureInvariant | RegexOptions.Compiled); 

    public static Dictionary<string, string> Extract(string line) 
    { 
     Dictionary<string, string> results = new Dictionary<string, string>();   
     foreach (Match match in regex.Matches(line)) 
     { 
      var groupKey = match.Groups["key"]; 
      var groupValue = match.Groups["value"]; 
      if (groupKey.Success && groupValue.Success) 
      { 
       // add the group value trimmed as we might have extra blank spaces 
       results[groupKey.Value.Trim()] = groupValue.Value.Trim(); 
      } 
     } 
     return results; 
    } 
相關問題