我有一个包含不同信息的字符串,例如
string str = "
Description:
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT
Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1
Description:
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2
Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3"
我希望以某种方式解析它以获得此结果:
resultString1 = "
Description:
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT
Description:
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2"
resultString2 =
Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1
Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3"
更新
我正在从文件中读取此信息,因此字符串由循环填充,并且每个描述后面都有一个新行,并且注意, 所以可能应该是小算法,直到下一次出现Note才会读到,如果找到Note会读到下一个新行......就像那样。
答案 0 :(得分:2)
我看到你想要ordrer / cut你的内容。
这是一个可能的解决方案:
// string to sort / cut
string str ="
Description:
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT
Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1
Description:
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2
Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3";
//List of string to retrieve tags descriptions
List<String> tagsDescriptions = new List<String>();
//List of string to retrieve tags notes
List<String> tagsNotes = new List<String>();
// Read str and get only the Description content 'sample'
using (StringReader reader = new StringReader( text ))
{
string line;
bool getContent = false;
while ((line = reader.ReadLine()) != null)
{
if(getContent)
{
tagsDescription.Add(line);
getContent = false;
}
if(line.contain("Description"))
{
getContent = true;
}
}
}
答案 1 :(得分:0)
你可以试试这个。我没有对此进行测试,效率不高。用它作为指南。这假设您遵循以下格式说明:&gt;&gt;注意:。你必须做类似的事情才能获得Note变量。 :
string input = @"
Description:
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT
Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1
Description:
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2
Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3";
int startPosition = 0;
int descPosition = -1;
string descriptionResults = "";
while (input.IndexOf("Description:", startPosition) > -1)
{
descPosition = input.IndexOf("Description:", startPosition);
int notePosition = input.IndexOf("Note:", startPosition);
descriptionResults += input.SubString(descPosition, notePosition);
startPosition = descPosition;
}
答案 2 :(得分:0)
使用以下正则表达式将起作用:
Description:\s*(.*)
抓住创建的群组
Here is a link to the resultant matching。我不知道.net的在线正则表达式测试器可以保存链接
答案 3 :(得分:-1)
您可以使用两个正则表达式来匹配您需要的字符串
对于描述类似于:Description:.\r*\n*.*
对于注释:Note:\r*\n*.*
Regex regex = new Regex("Description:.\r*\n*.*");
string str1 = @"Description:
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT
Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1
Description:
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2
Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3";
string output = string.Empty;
foreach (var match in regex.Matches(str1))
{
output += match;
}
Regex regex = new Regex("Note:\r*\n*.*");
string str1 = @"Description:
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT
Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1
Description:
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2
Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3";
string output = string.Empty;
foreach (var match in regex.Matches(str1))
{
output += match;
}
通过一点操作,您可以获得结果。