“|”;c#中的操作符如何转义它

本文关键字:何转义 转义 操作符 | 更新日期: 2023-09-27 18:17:49

我有以下字符串-这是一个执行exe的参数。

但是我得到错误- "运算符"|"不能应用于字符串和字符串类型的操作数。

如何转义"|"?我试了',没有成功:(

string.Format(
                        @"-S -E -M -m -e ascii -i {0}.dat -T db1.dbo.table1 -R {1}.reject -t "|" -r 'r'n -rt value -rv 1000 -W  -fh 0", 
                        saveFilePath + a,
                        saveFilePath + b);

“|”;c#中的操作符如何转义它

@"..."文字中,要有"字符,必须使用其中两个。所以:

string.Format(
    @"-S -E -M -m -e ascii -i {0}.dat -T db1.dbo.table1 -R {1}.reject -t ""|"" -r 'r'n -rt value -rv 1000 -W  -fh 0", 
// note -----------------------------------------------------------------^^-^^
    saveFilePath + a,
    saveFilePath + b);

然而,如果您希望这些'r'n是回车和换行符,则不能使用@"..."字符串字面值,因为反斜杠在它们中并不特殊(这是它们的全部意义)。如果是这样的话:

    string.Format(
        "-S -E -M -m -e ascii -i {0}.dat -T db1.dbo.table1 -R {1}.reject -t '"|'" -r 'r'n -rt value -rv 1000 -W  -fh 0", 
// note ^-------------------------------------------------------------------^^-^^
        saveFilePath + a,
        saveFilePath + b);

推荐阅读: string (c# Reference)


旁注:不需要在函数参数上进行字符串连接。因为你已经调用string.Format,你可以让这样做:

string.Format(
    "-S -E -M -m -e ascii -i {0}{1}.dat -T db1.dbo.table1 -R {2}{3}.reject -t '"|'" -r 'r'n -rt value -rv 1000 -W  -fh 0", 
// note ---------------------^^^^^^--------------------------^^^^^^
    saveFilePath,
    a,             // <==
    saveFilePath,
    b);            // <==