【问题标题】:Why this double "\\" string replacement is not working in C#?为什么这个双“\\”字符串替换在 C# 中不起作用?
【发布时间】:2019-07-17 13:32:13
【问题描述】:

我是C# 的新手,我发现字符串替换操作存在以下困难。

我有以下情况:

string utenteActiveDirectory = utente.UserId.Split('|')[1].Replace("\\", @"\");

其中utente.UserId.Split('|')[1] 包含以下字符串:domain\\username

我必须用单个 \ 字符替换双 \\。但是尝试使用前一行代码它不起作用,我仍然有domain\\username 而不是预期的domain\username 结果。

为什么?怎么了?我错过了什么?我该如何解决?

【问题讨论】:

  • "\\"@"\" 是一回事。我想你想要@"\\", @"\"
  • 字符串 really 是否包含\\,或者这正是调试器告诉您的内容?当字符串实际上只包含单个字符 \ 时,它将“有用地”显示特殊字符作为它们的转义序列(因此实际上不需要替换)。
  • 该代码将单个反斜杠替换为单个反斜杠。请避免对调试器显示字符串的方式感到困惑。它有利于向它们展示您在程序中编写它们的方式。所以将反斜杠加倍。点击望远镜图标再看一次。
  • @JeroenMostert 你是对的,它是调试器!!!如果你把它作为答案,我会接受它!!!
  • Replace "\\" with "\" in a string in C# 的可能重复项。这种情况发生了很多次,我知道我们必须有一个重复的somewhere。 :-)

标签: c# .net string


【解决方案1】:

尝试使用

string utenteActiveDirectory = utente.UserId.Split('|')[1].Replace(@"\\", @"\");

原因是 \ 是一个转义字符,所以您在原始代码中实际上所做的只是将 \ 替换为 \

【讨论】:

  • 更换后我仍然获得相同的\\
  • 如何验证是否还有双反斜杠?
猜你喜欢
  • 2022-01-26
  • 2021-04-30
  • 1970-01-01
  • 2020-07-04
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 2013-07-04
相关资源
最近更新 更多