Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要从字符串中动态拆分某些内容_C#_String_Split - Fatal编程技术网

C# 需要从字符串中动态拆分某些内容

C# 需要从字符串中动态拆分某些内容,c#,string,split,C#,String,Split,我有一个字符串,有点像这样: string data = "I have a {apple} and a {orange}"; I have a {apple} and a {orange} 我需要提取{}中的内容,比如说10次 我试过这个 string[] split = data.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries); 问题是我的数据是动态的,我不知道{}在什么情况下会出现,它

我有一个字符串,有点像这样:

string data = "I have a {apple} and a {orange}";
I have a 
{apple} 
 and a 
{orange}
我需要提取{}中的内容,比如说10次

我试过这个

string[] split = data.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries);
问题是我的数据是动态的,我不知道{}在什么情况下会出现,它也可能是这样的

Give {Pen} {Pencil}
我想上面的方法行不通,所以我想知道一种动态的方法来实现这一点。任何输入都会非常有用

感谢和问候

试试这个:

string data = "I have a {apple} and a {orange}";
Regex rx = new Regex("{(.*?)}");

foreach (Match item in rx.Matches(data))
{
    Console.WriteLine(item.Groups[1].Value);
}
您需要使用正则表达式来获取所需的所有值。

尝试以下方法:

string data = "I have a {apple} and a {orange}";
Regex rx = new Regex("{(.*?)}");

foreach (Match item in rx.Matches(data))
{
    Console.WriteLine(item.Groups[1].Value);
}
您需要使用正则表达式来获取所需的所有值。

如果{}之间的字符串不包含嵌套的{},您可以使用正则表达式来执行此任务:

string data = "I have a {apple} and a {orange}";
Regex reg = new Regex(@"\{(?<Name>[A-z0-9]*)\}");
var matches = reg.Matches(data);
foreach (var m in matches.OfType<Match>())
{
    Console.WriteLine($"Found {m.Groups["Name"].Value} at {m.Index}");
}
要获取字符串的其余部分,可以使用Regex.Split:

如果{}之间的字符串不包含嵌套的{},则可以使用正则表达式执行此任务:

string data = "I have a {apple} and a {orange}";
Regex reg = new Regex(@"\{(?<Name>[A-z0-9]*)\}");
var matches = reg.Matches(data);
foreach (var m in matches.OfType<Match>())
{
    Console.WriteLine($"Found {m.Groups["Name"].Value} at {m.Index}");
}
要获取字符串的其余部分,可以使用Regex.Split:


据我所知,您希望将该字符串拆分为如下部分:

string data = "I have a {apple} and a {orange}";
I have a 
{apple} 
 and a 
{orange}
然后你想检查一下这些部分,并对它们做些什么,这取决于这些部分是否包含在{}中。如果是-您需要Regex.Split:


据我所知,您希望将该字符串拆分为如下部分:

string data = "I have a {apple} and a {orange}";
I have a 
{apple} 
 and a 
{orange}
然后你想检查一下这些部分,并对它们做些什么,这取决于这些部分是否包含在{}中。如果是-您需要Regex.Split:



怎么样?@Venky:互联网上的C正则表达式教程比全世界的沙粒还多。。。互联网上也有大量的虚假事实。虽然,似乎有些人无论如何都愿意为你做这项工作,所以你很幸运…@Fildor:你知道吗,存储数据的方式比全世界的沙粒还要多…@musefan你真的很喜欢沙粒类比,不是吗;D@Fildor当前位置有一天我希望在评论中使用它的次数比世界上有更多的全麦谷物。。。或者也许我明天就忘了这是怎么回事?@Venky:互联网上的C正则表达式教程比全世界的沙粒还多。。。互联网上也有大量的虚假事实。虽然,似乎有些人无论如何都愿意为你做这项工作,所以你很幸运…@Fildor:你知道吗,存储数据的方式比全世界的沙粒还要多…@musefan你真的很喜欢沙粒类比,不是吗;D@Fildor当前位置有一天我希望在评论中使用它的次数比世界上有更多的全麦谷物。。。或者明天我可能已经忘记了,除了{}个数据,我还能存储其余的数据吗?@Venky不确定我是否得到了你,给我一个例子,比如,在一个单独的数组中{}个可能是,然后在一个单独的数组中正常的,比如苹果,orange和I有一个and和ASTORE,用于存储数组或列表中的值,然后使用子字符串拆分字符串以执行所需操作。@Venky:为什么要这样做?我觉得你没有告诉我们你的真实要求。。。您是否正在尝试用不同的值重新生成字符串?比如一个替换函数?除了{}个之外,我怎么能存储其余的数据呢?@Venky不确定我得到了你,给我一个例子,比如,在一个单独的数组中{}个可能是,然后在一个单独的数组中正常的,比如苹果,orange和I有一个and和ASTORE,用于存储数组或列表中的值,然后使用子字符串拆分字符串以执行所需操作。@Venky:为什么要这样做?我觉得你没有告诉我们你的真实要求。。。您是否正在尝试用不同的值重新生成字符串?像替换函数一样?除了{}个之外,我如何存储其余的数据?其余的数据是什么意思@在一个单独的数组中,{}个字母可能是,然后是单独数组中的正常字母,例如apple、orange和I有一个字母,a你可以通过基于m.Index的拆分来检索其余的数据。如果你想替换{}之间的数据,你可以使用reg.Replacedata,m=>m.Groups[Name].Value+\n如果你不想替换,只需要分别存储{}个和普通的数据。这就是我如何存储{}个数据之外的其余数据?其余数据是什么意思@在一个单独的数组中,{}个字母可能是,然后是单独数组中的正常字母,例如apple、orange和I有一个字母,a你可以通过基于m.Index的拆分来检索其余的数据。如果要替换{}之间的数据,可以使用reg.Replacedata,m=>m.Groups[Name].Value+\n如果不想替换,只需分别存储{}个和普通个即可