c# - 如何逃脱 '\'

标签 c# string backslash

在执行我的 C# 代码以使用 ADO 读取 .CSV 时,我遇到了下一个问题: 在读取我的行时,我得到一个包含在字符串中并用“\”分隔的值。像“hi\goodMorning\ByeBye”之类的东西。

这是我的代码:

// Crear el objeto de conexión utilizando la cadena de conexión anterior. 
using (OleDbConnection objConn = new OleDbConnection(sConnectionString))
{
    // Abrir la conexión con la base de datos. 
    objConn.Open();
    // El código utiliza un comando SQL SELECT para mostrar los datos de la hoja de cálculo.
    string sql = "SELECT * FROM " + fileName;
    // Crear un nuevo OleDbCommand para devolver los datos de la hoja de cálculo. 
    using (OleDbCommand objCmdSelect = new OleDbCommand(sql, objConn))
    {
        // Crear un nuevo OleDbDataAdapter que se usa para generar un DataSet // basado en la instrucción SQL SELECT anterior. 
        // Pasar el comando Select al adaptador. 
        //OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(objCmdSelect);
        OleDbDataReader reader = objCmdSelect.ExecuteReader();

        while (reader.Read())
        {
            string value= @reader[0].ToString();

到目前为止我一直在尝试:

A -->  string value = reader[0].ToString();

B -->  value .Split(Convert.ToChar(92)); //Using ASCII

C --> System.Text.RegularExpressions.Regex.Escape("\\")

D --> value.Contains((char)92); //---> returns false

E -->  value.Contains("\\\"); //---> returns false

F --> .Replace doesn't work either

我没主意了!很高兴听到任何建议。我认为如果我能逃脱这个角色,问题就会得到解决。到目前为止我做不到。如果我得到答案,我会发布它。

This --> @"your\string\here".Contains("\\"); --> 返回 TRUE -- 它没有

enter image description here

我的正确答案是:

string []  temp = @"aaa\taaa\taaa".Split('\t');

谢谢大家! :)

最佳答案

要转义转义序列,请使用它两次:

"\\"

或者在字符串前面使用@ verbatim-string-literal。它将强制编译器在没有任何转义序列的情况下按字面解释字符串。查看documentation

@"\"

这意味着你想使用 split 你可以使用 this overload

string []  temp = @"your\string\here".Split(new string [] {@"\"}, StringSplitOptions.None);

overload that accepts a char as parameter

string []  temp = @"your\string\here".Split('\\');

ContainsReplace 的工作方式类似:

bool cont = @"your\string\here".Contains(@"\");

string repl = @"your\string\here".Replace(@"\", " ");

编辑:

更新后很明显您的字符串是制表符分隔的:

enter image description here

你需要用\t一个制表符来分割它!

string []  temp = @"aaa\taaa\taaa".Split('\t');

请阅读我发布的第一个链接。文档说:

A character that follows a backslash character () in a regular-string-literal-character must be one of the following characters: ', ", \, 0, a, b, f, n, r, t, u, U, x, v. Otherwise, a compile-time error occurs.

关于c# - 如何逃脱 '\',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46447461/

相关文章:

c# - 如何在自动更新期间将 .NET 应用程序固定到任务栏?

c# - 拆分以逗号分隔的行,注意不要在文本 block 内的逗号上拆分

将带有反斜杠字符的变量添加到 URL 字符串时出现 Python 错误

c# - 为什么 WPF 列表框会在按下鼠标按钮而不是按下按钮时更改选择?

c# - 如何使 ListView 中的项目具有不同的颜色?

android - 为什么我们需要在Android Studio中连接字符串之前添加@SuppressLint ("SetTextI18n")注解

string - 查找字符串中特定字符的索引,然后解析该字符串

ios - 将具有 "\n"的数组元素合并到 Swift 中的字符串中

matlab - 如何对 2 个以上的变量使用反斜杠命令?

python - [ python ] : problem about python string literals