我收到以下代码的错误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);
}
}
答案 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
。