常正則表達式是不是在現在看來似乎是使用合適的工具。
閱讀周到職位的詳細信息:https://softwareengineering.stackexchange.com/questions/223634/what-is-meant-by-now-you-have-two-problems
當一個簡單的方案會做,用它!下面是一個方案,該方案將成功,只要冒號唯一屬性和值之間發生解析結構,也不在他們
代碼
static void Main(string[] args)
{
string data = "ATTRIBUTE: Value of this attribute,ATTRIBUTE2: Another value, but this one has a comma in it,ATTRIBUTE3:, another value,value1,ATTRIBUTE4:end of file";
Console.WriteLine();
Console.WriteLine("As an String");
Console.WriteLine();
Console.WriteLine(data);
string[] arr = data.Split(new[] { ":" }, StringSplitOptions.None);
Dictionary<string, string> attributeNameToValue = new Dictionary<string, string>();
Console.WriteLine();
Console.WriteLine("As an Array Split on ':'");
Console.WriteLine();
Console.WriteLine("{\"" + String.Join("\",\"", arr) + "\"}");
string currentAttribute = null;
string currentValue = null;
for (int i = 0; i < arr.Length; i++)
{
if (i == 0)
{
// The first element only has the first attribute name
currentAttribute = arr[i].Trim();
}
else if (i == arr.Length - 1)
{
// The last element only has the final value
attributeNameToValue[currentAttribute] = arr[i].Trim();
}
else
{
int indexOfLastComma = arr[i].LastIndexOf(",");
currentValue = arr[i].Substring(0, indexOfLastComma).Trim();
string nextAttribute = arr[i].Substring(indexOfLastComma + 1).Trim();
attributeNameToValue[currentAttribute] = currentValue;
currentAttribute = nextAttribute;
}
}
Console.WriteLine();
Console.WriteLine("As a Dictionary");
Console.WriteLine();
foreach (string key in attributeNameToValue.Keys)
{
Console.WriteLine(key + " : " + attributeNameToValue[key]);
}
}
輸出:
作爲字符串
ATTRIBUTE:此屬性的值,ATTRIBUTE2:另一個值,但這個有一個逗號在它,ATTRIBUTE3 :,另一個值,值1,ATTRIBUTE4:文件
的端作爲在陣列分割 ':'
{ 「ATTRIBUTE」, 「這個屬性,ATTRIBUTE2" 的值,」 另一值,但是這一次在其中具有逗號,ATTRIBUTE3" , 「另一個值,值1,ATTRIBUTE4」, 「文件結束」}
作爲字典
ATTRIBUTE:此屬性的值
ATTRIBUTE2:另一個值,但是這個值有一個逗號
ATTRIBUTE3:,另一個值,值1
ATTRIBUTE4:文件結束
首先,問自己: 「我想從我的輸入檢索什麼」 _ _。之後,你可以搜索如何做到這一點。一個好的觀點,你注意到你的輸入中的一個「模式」,你可以寫一個正則表達式。 – Niitaku
我基本上想要檢索一個乾淨的可訪問的鍵/值存儲,我可以分析或轉換爲列數據集。 答案可能只是:我需要學習正則表達式。 – econgineer
我不介意幫忙。 ;)你想使用哪種語言的正則表達式?您可以編輯您的問題以添加您在評論中撰寫的所有信息。 – Niitaku