该函数获取一个数字字符串(例如“ 23559009”)和子字符串的长度值(例如2),我需要实现该函数,以便它将数字值切成数字字符串(例如“ 23” ,“ 35”,“ 55”,“ 59”,“ 90”,“ 00”,“ 09”),并将这些数据作为数组返回。
现在我有用于测试的初始代码:
using System;
public static class Series
{
public static string[] Slices(string numbers, int sliceLength)
{
int digits = numbers.Length;
if(digits != null || digits > sliceLength || sliceLength < 1)
throw new ArgumentException();
else
{
string[] dgts = {"1", "2"};
return dgts;
}
}
}
答案 0 :(得分:6)
使用Linq:
public static string[] Slices(string numbers, int sliceLength) =>
Enumerable.Range(0, numbers.Length - sliceLength + 1).
Select(i => numbers.Substring(i, sliceLength)).
ToArray();
请注意,最后一个字符将被忽略+您可能需要验证参数(numbers
不为null且sliceLength
> 0)。
答案 1 :(得分:1)
为此的子字符串代码将具有很大的冗余性。将字符串发送到char数组,然后执行循环
private PriorityQueue<Queue<Customer>> queue = new PriorityQueuee<Queue<Customer>>();
请记住,这是伪的,您需要的一切都在这里,您只需创建变量,并确保语法正确。
在行中的:for(int i = 0; i
这两个代表您要分割的值,
在行中的:字符串持有者= charray [i] + charray [i + 1]; 您需要添加另一个字符,用于拆分的数量。即3将是:
字符串持有人= charray [i] .toString()+ charray [i + 1] .toString + charray [i + 2];
请记住,如果拆分值(在您的情况下为两个)定期更改,则可以嵌套另一个for循环
答案 2 :(得分:1)
在评估不正确的输入时会出现一些错误,因此使用正常的for循环获取结果并不困难
public string[] Slices(string numbers, int sliceLength)
{
int digits = numbers.Length;
string[] result = new string[numbers.Length + 1 - sliceLength];
if (digits < sliceLength || sliceLength < 1)
throw new ArgumentException();
else
{
for(int x = 0; x < numbers.Length + 1 - sliceLength; x++)
result[x] = numbers.Substring(x, sliceLength);
return result;
}
}