繁体   English   中英

如何将转义字符(例如“\\t”)作为“\\t”而不是文字制表符插入字符串中?

[英]How do I insert an escape character(e.g. "\t") into a string as "\t", not literal tabs?

我正在使用 C# 创建表来为 hive 生成​​ SQL 查询。 表的架构存储在一个文件中,具有表属性和分隔符信息。 在生成查询时,我指定了从文件中读取的分隔符,但它被直接添加为制表符,而不是在制表符作为分隔符的情况下添加'\\t'

起初我尝试在开头包含 @,但它不适用于@"{varname}"格式。 它确实与直接在字符串中使用的'\\t'使用。 ( @"'\\t'" )。 现在我已经设置了一个条件来将'\\t'直接插入字符串而不是{varname}

string delimiter = fileSchema.delimiter.ToString();
string loc = $@"delimited fields terminated by '{delimiter}'"; // generated 
//"delimited fields terminated by '        '"

//workaround for now:
string delimiter = fileSchema.delimiter.ToString();
string loc = delimiter.Equals("\t") ? @"delimited fields terminated by '\t'" : $@"delimited fields terminated by '{delimiter}'";

'\\t'是预期的,而不是实际的标签

我有一个当前是制表符(“\\t”)的分隔符,我想获得该字符串的转义版本(“\\t”/@“\\t”,即“斜杠 t”) - 怎么能我这样做?

您可以使用System.Text.RegularExpressionsstring转换为转义形式的string ,例如

string delimiter = Regex.Escape("\t\n");
Console.WriteLine(Regex.Escape(delimiter));
//output: \t\n

你说的是:

我有一个当前是制表符 ( "\\t" ) 的delimiter ,我想获得该字符串的转义版本 ( "\\\\t" / @"\\t" ,即 "slash t") - 如何我可以吗?

对吗? 如果是这样,下一个问题就变成了“使用哪个转义规则?” - 大概你的意思是 C# 转义规则,但不同的 .NET 语言可以有不同的规则,因为这是一个编译的东西。 实际上,不存在针对此的预卷 API,因此最好的办法是编写自己的转义代码来处理您期望的令牌,并用您期望的转义形式替换它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM