0
if (Regex.IsMatch(line, "^([\\w\\-\\ ]+)\\ ,([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)", RegexOptions.IgnorePatternWhitespace))

如何让 ignorepatternwhitespace 使用上述内容。它通常与 @" .... " 一起使用,但由于引号和反斜杠的数量,我使用 " ... " 并使用反斜杠而不是 @" ... " 转义它们,并将引号加倍。但现在它只能作为一条大线而不是整齐的小块。

4

1 回答 1

1

原因是语言规范禁止普通字符串文字 ( "Normal String Literal") 跨越行 - 也就是说,它可能不包含嵌入的文字换行符。

像这样的字符串

@"This
string
spans
lines
"

可以像上面那样跨越行。

您可以做的是利用 C# 的常量折叠并按照以下方式构建您的字符串:

Regex foo = new Regex(
                    " part 1"
                  + " part 2"
                  + " part 3"
                  + ...
                , RegexOptions.IgnorePatternWhitespace
                ) ;
于 2013-07-17T17:39:46.063 回答