if (Regex.IsMatch(line, "^([\\w\\-\\ ]+)\\ ,([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)", RegexOptions.IgnorePatternWhitespace))
如何使用ignorepatternwhitespace来处理上述问题。它通常与@“....”一起使用,但由于引号和反斜杠的数量,我选择了“...”并使用反斜杠而不是@“...”来逃避它们,并将我的引号加倍。但现在它只能作为一条巨大的线而不是整齐的小块。
答案 0 :(得分:1)
原因是语言规范禁止来自生成行的正常字符串文字("Normal String Literal"
) - 也就是说,它可能不包含嵌入的文字换行符。
像这样的At-strings
@"This
string
spans
lines
"
可以跨越上面的行。
你可以做的是利用C#的常量折叠并沿着这些线构建你的字符串:
Regex foo = new Regex(
" part 1"
+ " part 2"
+ " part 3"
+ ...
, RegexOptions.IgnorePatternWhitespace
) ;