如何摆脱字符文字中的太多字符?

时间:2017-02-03 18:51:36

标签: c#

我收到以下代码的错误Too many characters in character literal?我该如何声明buildserverlocation?

using System;

class Program
{
    static void Main(string[] args)
    {
        string buildServerLocation = @'\\Location\builds682\INTEGRATION\ABC1234.QSC.0.0-000000025-P-1';
        char delimiterChars = '\\';
        string[] serverString = buildServerLocation.Split(delimiterChars);
        string serverName = serverString[1] + ".company.com";
        Console.WriteLine("build server name is " + serverName);
    }
}

3 个答案:

答案 0 :(得分:3)

这需要是一个字符串,但您已使用'语法,该语法仅对单个字符有效:

string buildServerLocation = @'\\snowcone\builds682\INTEGRATION\IPQ8064.ILQ.5.0-000000025-P-1';

应该是

string buildServerLocation = @"\\snowcone\builds682\INTEGRATION\IPQ8064.ILQ.5.0-000000025-P-1";

此声明本身是正确的,但您接着将其传递给split。这是合法的 - 感谢Jeppe - 但最好还是明确表示这是一个带有单个字符的数组:

char delimiterChars = '\\';

应该是

char[] delimiterChars = { '\\' };

但更大的问题是这一切都不正确。如果您正在拆分路径,会使用专门从路径中提取数据的类,而不是自己滚动

此外,从安全角度来看,在公共站点上发布内部服务器的路径并不是一个超级好主意。

答案 1 :(得分:0)

您的字符串文字应使用双引号。

string buildServerLocation = @"\\snowcone\builds682\INTEGRATION\IPQ8064.ILQ.5.0-000000025-P-1";

认识到你的字符串以两个反斜杠开头,你可能想要字符串数组中的第三个元素(index = 2)。

string serverName = serverString[2] + ".qualcomm.com";

Eric提到使用专为此任务设计的类。在这种情况下,URI似乎是一个不错的选择。

public static void Main(String[] args)
{
    string buildServerLocation = @"\\location\builds682\INTEGRATION\IPQ8064.ILQ.5.0-000000025-P-1";
    var uri = new Uri(buildServerLocation);
    string serverName = $"{uri.Host}.company.com";
    Console.WriteLine("build server name is {0}", serverName);
    Console.ReadKey();
}

答案 2 :(得分:-4)

这一行是你的问题:

char delimiterChars = '\\';

char字面积中只能包含一个字符。您需要使用分隔符作为分隔符,需要使用引号标记string

string delimiterChars = "\\";

注意:这将适用于其他一些编辑,因为string.Split()的重载需要string。您只需要定义其第二个参数,在本例中可以是null