【发布时间】:2010-10-18 22:41:22
【问题描述】:
我目前正在尝试在 C#(最新的 .NET 和 Visual Studio 2008)中拆分字符串,以便检索方括号内的所有内容并丢弃剩余的文本。
例如:“H1-受体拮抗剂 [HSA:3269] [PATH:hsa04080(3269)]”
在这种情况下,我有兴趣将“HSA:3269”和“PATH:hsa04080(3269)”放入字符串数组中。
如何做到这一点?
【问题讨论】:
我目前正在尝试在 C#(最新的 .NET 和 Visual Studio 2008)中拆分字符串,以便检索方括号内的所有内容并丢弃剩余的文本。
例如:“H1-受体拮抗剂 [HSA:3269] [PATH:hsa04080(3269)]”
在这种情况下,我有兴趣将“HSA:3269”和“PATH:hsa04080(3269)”放入字符串数组中。
如何做到这一点?
【问题讨论】:
Split 在这里帮不了你;你需要使用正则表达式:
// using System.Text.RegularExpressions;
// pattern = any number of arbitrary characters between square brackets.
var pattern = @"\[(.*?)\]";
var query = "H1-receptor antagonist [HSA:3269] [PATH:hsa04080(3269)]";
var matches = Regex.Matches(query, pattern);
foreach (Match m in matches) {
Console.WriteLine(m.Groups[1]);
}
产生你的结果。
【讨论】:
试试这个
string mystr = "Hello my name is {robert} and i live in {florida}";
List<string> myvariables = new List<string>();
while (mystr.Contains("{"))
{
myvariable.Add(mystr.Split('{', '}')[1]);
mystr = mystr.Replace("{" + mystr.Split('{', '}')[1] + "}", "");
};
这样我将有一个包含罗伯特和佛罗里达的数组。
【讨论】:
{之前从来没有},你也从来没有连续两次有{。它也非常低效,因为它分裂不必要地多次使用字符串。像其他答案一样使用正则表达式会更加有效和健壮。