C# 如何分离长度未知的字符串?

C# 如何分离长度未知的字符串?,c#,string,substring,C#,String,Substring,我正在编写一个程序,根据用户输入的名称有不同的输出。输出的格式由第一个字母决定,除第一个字母外,整个过程中使用名称的其余部分。从本质上讲,我如何生成一个子字符串,使其遵循如下内容 Console.WriteLine("What name would you like to use?(please enter in lower case)"); name = Console.ReadLine(); namelength = name.Length;

我正在编写一个程序,根据用户输入的名称有不同的输出。输出的格式由第一个字母决定,除第一个字母外,整个过程中使用名称的其余部分。从本质上讲,我如何生成一个子字符串,使其遵循如下内容

 Console.WriteLine("What name would you like to use?(please enter in lower case)");
        name = Console.ReadLine();
        namelength = name.Length;
        letter = name.Substring(0);
        restofname = name.Substring(1, namelength);

你可以这样做:

Console.WriteLine("What name would you like to use?(please enter in lower case)");
    name = Console.ReadLine();
    letter = name.Substring(0, 1);
    restofname = name.Substring(1);

String
是字符数组,因此您可以使用索引访问它

char letter = name[0];
但您应该检查字符串的长度是否大于0,或者是否为空,所以您的代码应该如下所示

if(!string.IsNullOrEmpty(name) && name.Length>1)
{
   char letter = name[0];
   ......   
}
我使用了
name.Length>1
,因为若名称是1个字符,那个么就并没有名称的其余部分,或者第二部分,第二部分可以是

string restofname = name.Substring(1, name.Length);
如果您获得了上述名称的其余部分,则不必引入额外的变量,这样维护起来就更容易了。:)

希望这有助于:

   Console.WriteLine("What name would you like to use?(please enter in lower case)");
    string name = Console.ReadLine();
    string letter = name.Length > 0 ? name.Substring(0, 1): string.Empty;       
    string restofname = string.IsNullOrEmpty(letter) ? string.Empty : name.Substring(1);
    Console.WriteLine(restofname);