当'\'后跟一个成为有效转义序列的字符时,在'\'字符上拆分一个字符串

Vij*_*iri 2 c#

        public void Test(String userWithDomain)
        {   
            // assume userWithDomain could be a console input or an ajax call.

            // 1: userWithDomain = "domain\\user"; 
            // 2: userWithDomain = "domain\user"; 
            // 3: userWithDomain = "domain\test";

            // (1) would work;
            // (2) would work too [this kind of input is not valid from within a C# app]
            // (3) wouldn't work because \t would a valid escape sequence and output would be "domin" "est"

            String[] split = userWithDomain.Split(new String[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);

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

            // How do I fix (3)?
        }
Run Code Online (Sandbox Code Playgroud)

编辑:

该代码适用于所有情况,但如果从JavaScript("domain\testuser")等javascript调用此方法,则会失败;

Jon*_*eet 5

我的猜测是,你的测试数据被搞砸了,而不是代码.

例如,如果您正在做:

string userWithDomain = "domain\test";
Run Code Online (Sandbox Code Playgroud)

不是你从AJAX,控制台输入等实际获得的 - 因为你实际上有"域",然后是一个标签,然后是"est".

要在C#源代码中表示文本"domain\test",最简单的方法是使用逐字字符串文字:

string userWithDomain = @"domain\test";
Run Code Online (Sandbox Code Playgroud)

在你的测试用例中使用,我怀疑你会发现它工作正常.(就个人而言,我会使用userWithDomain.Split('\\', StringSplitOptions.RemoveEmptyEntries),但这确实是一个不同的问题.)