使用 C# 8 索引和范围
Utilize C# 8 indices and ranges
我正在尝试以有效的方式解决在线挑战。给定一个 int
.
数组,我必须基本上以某种格式输出一个字符串
我必须使字符串看起来像:(123) 456-7890
(保证输入数组的长度正确)。
我发现了新的 C# 索引和范围并尝试了这样的事情:
public static string GenerateOutput(int[] numbers)
{
return $"({numbers[0..2]}) {numbers[3..5]}-{numbers[6..9]}";
}
但这并不是 return 想要的结果。如何将它们转换为字符串并 return 正确输出?
主要问题是您将数组放入字符串中。数组上的 ToString()
将产生描述类型的字符串,而不是其值的字符串。您需要连接这些数组。可以创建一个本地函数,使用起来更方便:
string getNums (int start, int end) =>
string.Join("", numbers[start..end]);
除此之外,您的索引在两端都包含在内。但是根据 Microsoft:
A range specifies the start and end of a range. Ranges are exclusive, meaning the end isn't included in the range.
这不是排他性的意思。 c-sharpcorner 说得更好:
The Range operator .. specifies the start (Inclusive) and end (exclusive) of a range.
我想他们这样做是有原因的,但从我的角度来看,这是一个非常令人惊讶的选择。
无论如何,考虑到这一点,您可以像这样实现本地功能:
var numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
string getNums (int start, int end) =>
string.Join("", numbers[start..end]);
return $"({getNums(0,3)}) {getNums(3,6)}-{getNums(6,10)}";
如果您的数字是一个字符串,那么它们会更有用,这样它们就可以直接排列:
var s = string.Join("", numbers);
现在您可以使用范围来剪切字符串:
var ph = $"(s[..3]}) {s[3..6]}-{s[^4..]}";
我正在尝试以有效的方式解决在线挑战。给定一个 int
.
我必须使字符串看起来像:(123) 456-7890
(保证输入数组的长度正确)。
我发现了新的 C# 索引和范围并尝试了这样的事情:
public static string GenerateOutput(int[] numbers)
{
return $"({numbers[0..2]}) {numbers[3..5]}-{numbers[6..9]}";
}
但这并不是 return 想要的结果。如何将它们转换为字符串并 return 正确输出?
主要问题是您将数组放入字符串中。数组上的 ToString()
将产生描述类型的字符串,而不是其值的字符串。您需要连接这些数组。可以创建一个本地函数,使用起来更方便:
string getNums (int start, int end) =>
string.Join("", numbers[start..end]);
除此之外,您的索引在两端都包含在内。但是根据 Microsoft:
A range specifies the start and end of a range. Ranges are exclusive, meaning the end isn't included in the range.
这不是排他性的意思。 c-sharpcorner 说得更好:
The Range operator .. specifies the start (Inclusive) and end (exclusive) of a range.
我想他们这样做是有原因的,但从我的角度来看,这是一个非常令人惊讶的选择。
无论如何,考虑到这一点,您可以像这样实现本地功能:
var numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
string getNums (int start, int end) =>
string.Join("", numbers[start..end]);
return $"({getNums(0,3)}) {getNums(3,6)}-{getNums(6,10)}";
如果您的数字是一个字符串,那么它们会更有用,这样它们就可以直接排列:
var s = string.Join("", numbers);
现在您可以使用范围来剪切字符串:
var ph = $"(s[..3]}) {s[3..6]}-{s[^4..]}";