【问题标题】:Split String with another String containing \t (tabs)用另一个包含 \t 的字符串拆分字符串(制表符)
【发布时间】:2011-11-18 12:38:42
【问题描述】:

我已经重写了整个问题,因为它很难阅读。

我的目标是从数据库中为拆分操作加载一个分隔符,并在 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 从数据库中取出而不需要额外的反斜杠?

【问题讨论】:

  • 问题不清楚你想在数据库中还是在你的代码中分割字符串
  • 我正在尝试在 c# 中拆分字符串
  • 我怀疑问题出在 escpaed 制表符上,但如果没有更多信息,我们也帮不上什么忙。
  • 然后使用 String.Split() 方法...
  • 听起来好像您在数据库中存储了斜杠和 t 字符而不是制表符 (0x09)。你能验证数据库字段的内容吗?你能在数据库中显示你的分隔符字符串的十六进制表示吗?

标签: c# database string tabs split


【解决方案1】:

可能是这样的:

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

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

但是不看代码很难说。

【讨论】:

  • 一切正常,如果我在 c# 中自己定义拆分字符串,则拆分工作正常,但是使用我的拆分字符串值从数据库中加载拆分字符串会导致额外的反斜杠,拆分不再起作用
  • 你在哪里看到这个额外的反斜杠?在调试器中?将鼠标悬停在变量上或使用手表时,调试器会显示一个额外的反斜杠。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
  • 2011-08-31
  • 2023-03-13
相关资源
最近更新 更多