C# 使用另一个包含\t(制表符)的字符串拆分字符串

C# 使用另一个包含\t(制表符)的字符串拆分字符串,c#,database,string,tabs,split,C#,Database,String,Tabs,Split,我重写了整个问题,因为它很难读懂 我的目标是为数据库中的拆分操作加载一个sperator,并用加载的分隔符分隔C中的字符串 String dbSeperator = "@START@\\t"; String stringToSplit = "@START@\t asdasdasd @START@\t 2242423 @START@\t asdasda"; String[] dbSperatorSplitArray = new String[1]; dbSeperatorSplitArray[0]

我重写了整个问题,因为它很难读懂

我的目标是为数据库中的拆分操作加载一个sperator,并用加载的分隔符分隔C中的字符串

String dbSeperator = "@START@\\t";
String stringToSplit = "@START@\t asdasdasd @START@\t 2242423 @START@\t asdasda";
String[] dbSperatorSplitArray = new String[1];
dbSeperatorSplitArray[0] = dbSeperator;

String seperatedValues = stringToSplit.Split(dbSeperatorSplitArray, StringSplitOptions.None);
上面的示例不起作用,因为从数据库中读取的字符串将反斜杠加倍

以下代码完全使用C编写,无需访问数据库,一切都会很好:

String cSharpSeperator = "@START@\t";
String stringToSplit = "@START@\t asdasdasd @START@\t 2242423 @START@\t asdasda";
String[] cSharpSperatorSplitArray = new String[1];
cSharpSeperatorSplitArray[0] = cSharpSeperator;

String seperatedValues = stringToSplit.Split(cSharpSeperatorSplitArray, StringSplitOptions.None);

有没有办法在不使用额外反斜杠的情况下将dbSeperator从数据库中取出?

可能是这样的:

  String[] split = YourString.Split(new String[] { "@START@\t" },StringSplitOptions.RemoveEmptyEntries);

        foreach (String item in split)
        {
            Console.WriteLine(item);
        }

但是如果没有看到代码,很难说。

问题不清楚您希望在数据库或代码中拆分字符串的位置。我正在尝试在cI中拆分字符串。我怀疑问题出在escpaed制表符中,尽管没有进一步的信息,我们也帮不上什么忙。然后使用String.Split方法…听起来好像您在数据库中存储了斜杠和t字符,而不是制表符0x09。您能验证数据库字段的内容吗?你能在数据库中显示分隔符字符串的十六进制表示形式吗?如果我自己在c中定义了splitstring,那么一切都可以正常工作,拆分也可以正常工作,但是从数据库中加载带有splitstring值的splitstring会导致一个额外的反斜杠,拆分不再工作。你在哪里看到这个额外的反斜杠?在调试器中?当将鼠标悬停在变量上或使用手表时,调试器将显示一个额外的反斜杠。