我想使用正則表達式來標識字符串中的某些單詞。VS2008 C#:正則表達式和標識某些單詞
例如:
"bla bla bla | First Name = John Doe | City = Denver | bla bla bla | State = CA | bla bla bla"
在上述字符串,即|我想分析出名字,城市和州的內容,並將它們存儲在散列表中的某些地方。
我該如何去做呢?我認爲最好的方法是使用正則表達式。
我想使用正則表達式來標識字符串中的某些單詞。VS2008 C#:正則表達式和標識某些單詞
例如:
"bla bla bla | First Name = John Doe | City = Denver | bla bla bla | State = CA | bla bla bla"
在上述字符串,即|我想分析出名字,城市和州的內容,並將它們存儲在散列表中的某些地方。
我該如何去做呢?我認爲最好的方法是使用正則表達式。
我會使用string.Split('|')和string.IndexOf(「=」)來解析元素。它肯定比正則表達式更直接。
如果您的數據一致(即始終使用|和=作爲分隔符),則可以使用字符串split方法在數組中獲取結果。
只是使用拆分不會更容易嗎?
例子:
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();
使用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
使用命名組是非常簡單的...
// 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;
}
但後來我將如何能夠捕捉鍵值對,例如City,State,FirstName等。 – 2009-12-17 17:29:05