【问题标题】:Replace "\\" with "\" in WindowsIdentity.GetCurrent().Name [duplicate]在 WindowsIdentity.GetCurrent().Name 中将“\\”替换为“\”[重复]
【发布时间】:2019-01-02 02:44:39
【问题描述】:

我想将WindowsIdentity.GetCurrent().Name 存储在string 中,但只有一个\

我怎样才能做到这一点?

我试过WindowsIdentity.GetCurrent().Name.Replace(@"\\", @"\")

【问题讨论】:

  • 这不是一个非常糟糕的主意吗? ` \ ` 只是意味着将下一个字符作为文字转义,因此 ` \\ ` 转换为单个文字 ` \\ `。而且显然也很糟糕地弄乱了评论格式。
  • @Artem 那么请给我一个解决方案。替换不起作用。
  • 应该已经只有一个'\'。也许您误解了显示 '\\' 的调试工具,因为在底层字符串中它不是转义序列 '\' 而是真正的 '\' 字符?或者是否真的有一个双'\',例如WindowsIdentity.GetCurrent().Name 写入文件?
  • @DavidWalser 如果你调用 Console.WriteLine 你会看到替换工作
  • @DavidWalser 你能提供你的 WindowsIdentity.GetCurrent().Name

标签: c# string replace


【解决方案1】:

应该已经只有一个'\'。您误解了显示 '\' 的调试工具,因为在底层字符串中不是转义序列 '\' 而是真正的 '\' 字符。

另请参阅this StackOverflow question 以获得一些参考。

在使用 Visual Studio 时the Text Visualizer 也可以提供帮助。它将显示“真实”文本。

【讨论】:

  • 非常感谢 :) 我真的不知道! (也感谢其他人的反对;))
  • 正确的做法是将其标记为重复,而不是添加基本上指向该重复问题的答案。请阅读How should duplicate questions be handled?
  • 当然。 “如果要理解为什么这些问题完全相关需要详细解释,那么这些问题不是重复的,只是相关的。”从提问者的角度来看,它与“.net 添加一些额外字符”无关。他根本不知道这方面,因此无法寻找,需要一个解释。我不认为这是重复的,该链接供进一步参考。
【解决方案2】:

https://msdn.microsoft.com/en-us/library/fk49wtc1(v=vs.110).aspx

WindowsIdentity.GetCurrent().Name.Replace(@"\\", @"\");

【讨论】:

  • 不,这不行,你还需要@""
【解决方案3】:

您可以在字符串上使用Replace() 函数来操作字符\

var foo = WindowsIdentity.GetCurrent().Name.Replace("\\\\","\\");

请注意,这是用于转义不寻常字符的字符,您需要为每个 \ 输入 \\

或者你可以在替换字符串前加上@

var foo = WindowsIdentity.GetCurrent().Name.Replace(@"\\", @"\");

【讨论】:

  • 天哪,请使用@"\\" 而不是"\\\\"
猜你喜欢
  • 2018-10-20
  • 2018-04-05
  • 1970-01-01
  • 2014-02-20
  • 2023-04-07
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
相关资源
最近更新 更多