Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# 带有正则表达式匹配问题的foreach循环_C#_Regex_Foreach_Console.writeline - Fatal编程技术网

C# 带有正则表达式匹配问题的foreach循环

C# 带有正则表达式匹配问题的foreach循环,c#,regex,foreach,console.writeline,C#,Regex,Foreach,Console.writeline,嗨,谢谢你的阅读。 我对Foreach循环有问题 从我所看到的,foreach输出对于所有阶段都是一次完成的 这是我的问题的一个例子 string[] substrings = Regex.Split(Input, splitPattern); foreach (string match in substrings) { Console.WriteLine("'{0}'" , match + "this is first match ") ; } 输出为: match 1 match

嗨,谢谢你的阅读。 我对Foreach循环有问题

从我所看到的,foreach输出对于所有阶段都是一次完成的

这是我的问题的一个例子

string[] substrings = Regex.Split(Input, splitPattern);
foreach (string match in substrings)
{
    Console.WriteLine("'{0}'" , match + "this is first match ") ;
}
输出为:

match 1 
match 2 
match 3 
this is first match
问题1我的问题是“这是第一场比赛”这个词显示在所有比赛之后,而不是每场比赛之后。 我想单独模拟每场比赛。因为我要将每个匹配的值赋给一个对象,而不是写线,所以如果我有5个匹配,意味着5个对象

问题2:如何处理每个分离的匹配(有或没有foreach循环)


谢谢

如果您需要使用
Regex.Split
,您需要定义一个模式(我看到您使用的是一个伪模式
xxx
),然后使用
Regex.Split
,注意此函数可能会在连续分隔符之间和字符串开头返回空值。可以使用一些LINQ:
.Where(p=>!string.IsNullOrWhiteSpace(p))
完成此修剪。这
其中
将遍历IEnumarable集合中的所有元素,并检查这些元素是null还是空白。如果元素为null或仅为空白,则将从结果中丢弃该元素
.ToList()
将IEnumerable转换为字符串列表(
list

因此,在运行
Regex.Split
之后,从空字符串中删除结果

@“
是一个。在它里面,所有反斜杠(和转义序列)都被视为文字(
@“\n”
是一个包含两个字符的字符串,
\
n
,而不是换行符)。编写
@“\s+”
以匹配比
“\\s+”
多1个空格非常方便

:

输出:

' abcdef abcdef '
' zxcvbn zxcvbn '
' poiuy poiuy'

你的分割模式可能不正确,你只能得到一个跨越三条线的匹配(匹配1-3加上换行符)。请发布您的输入数据以及拆分模式。模式:是xxx。输入数据:xxx abcdef abcdef xxx zxcvbn zxcvbn xxx poiuy poiuy poiuy。这些数据应拆分为3个子字符串。如果我知道第二个问题的答案,我就会知道是拆分还是foreach打印机制的问题。请查看此项。它能返回你需要的零件吗?Wiktor就是一个很好的例子。我向console.writeline添加了一条文本。它显示了我想要的匹配输出。但是如果你可以的话,我想知道.Where(p=>!string.IsNullOrWhiteSpace(p)).ToList()的意思是什么;以及为什么在分隔符处使用@。我也做了同样的事情,除了我刚才问的那些。我在答案中添加了更多的细节。精彩的解释。我要用你所有的添加物。问题((3))啊,顺便说一句,我的问题是分隔符。我使用了类似“xxx:”的东西,当我删除“:”时,效果很好。不知道为什么。“:”与regex.matchs配合得很好。这已经与您的输入有关。我不知道你的输入是什么,你需要什么样的实际模式。提示:当您想在注释中显示代码时,请使用
`
`
' abcdef abcdef '
' zxcvbn zxcvbn '
' poiuy poiuy'