按顺序填写两个数字之间的数字

  • 本文关键字:数字 两个 之间 顺序 c#
  • 更新时间 :
  • 英文 :


假设你有两个数字,4和9。数字不能小于0或大于9。

我想用正确顺序的数字填充4和9之间的空白,如下所示:456789

一个人究竟如何做到这一点?我被这个问题困了两个小时了。谢谢你。

我试过把数字放入数组中,并使用数组的长度来填充数字。

我已经尝试了许多我不知道如何解释的其他事情。

创建一个循环,循环遍历数字之间的所有整数,如果这是您想要的输出,则将每个数字添加到字符串中:

string CreateNumberSequence(int start, int end){
var sb = new StringBuilder();
for(int i = start; i <= end; i++){
sb.Add(i.ToString());
}
return sb.ToString();
}

注意,10-12将产生101112,因此您可能希望在数字之间添加一些分隔符,或者只是创建一个数字列表并分别进行格式化。你也可以使用Enumerable。范围,但如果你是编程新手,知道如何使用普通循环是很有用的。

如果您想要一个数字列表,将StringBuilder更改为List<int>,删除所有.ToString()并更改返回类型。或者直接使用前面提到的Enumerable.Range。

您可以使用Enumerable.Range

int start = 4, end = 10;
int[] range = Enumerable.Range(start, end - start + 1).ToArray();
// range: 4 5 6 7 8 9 10

您可以使用range方法。因为你知道序列的开始和结束,你可以把开始设置为4,从开始开始计算到结束的差值将是6。10-12则是

var number = Enumerable.Range(10, 3);
var number = Enumerable.Range(4, 6);
var result = string.Join("", number.Select(x => x.ToString()).ToArray());

带扩展方法:

public static class Ext
{
public static bool ToIntValue(this IEnumerable<int> source, out int output)
{
string joinedSource = string.Join(string.Empty, source);
return int.TryParse(joinedSource, out output);
}
public static IEnumerable<int> NumbersBetween(this int start, int end)
{
if (start > 0 && end <= 9 && start <= end)
{
for (int i = start; i <= end; i++)
yield return i;
}
else
{
throw new ArgumentException("Start and end must be beetween 1 and 9 and end must be bigger than start.");
}
}
}

用例:

if (1.NumbersBetween(9).ToIntValue(out int result))
{
Console.WriteLine(result);
}

最新更新