如果数组元素长度小于5,则连接数组中的元素



如果数组的元素长度小于4,我将尝试将下一个数组元素连接到数组中的单个元素。它应该添加到下一个元素索引中。

另一个逻辑是,如果下一个连续的数组长度也小于4个字符,那么它也会加入下一个数组元素,总共最多3次。我想实现这一点。这对我来说越来越复杂了——我不明白这个逻辑。

这是代码,这里它在titleList上有数组,现在我们必须在这个数组列表中使用上面的逻辑。

@foreach (var title in randomtitle)  
{
</span>@titleList.ElementAt(title)</span>
}
@code {
[Parameter]
public string theTitle { get; set; }
private string[] titleList = Array.Empty<string>();
protected override void OnParametersSet()
{  
if (!string.IsNullOrEmpty(theTitle))
{
titleList = theTitle.Split(" ");
}
}
private Random random = new();

private IEnumerable<int> randomtitle =>
Enumerable.Range(0, titleList.Count() - 1) // { 0, 1, 2, 3 } generate sequence
.OrderBy(x => random.Next())      // { 3, 1, 0, 2 } random shuffle
.Take(2)                          // { 3, 1 }       pick two
.ToList();
}

我认为您正在寻找一种可以执行以下操作的方法:

  • 获取字符串集合(如string[](
  • 迭代每个字符串并检查其长度是否大于或等于4
  • 如果是,一切都很好,就顺其自然吧
  • 如果没有,请将next附加到当前字符串,然后检查其长度
  • 如果它们仍然不大于或等于4,则追加下一个,但最多3次

然后这应该可以工作(尽管测试不好(:

演示:https://dotnetfiddle.net/2uHREv

static string[] MergeItems(IList<string> all, int minLength, int maxGroupCount)
{
List<string> list = new List<string>(all.Count);
for(int i = 0; i < all.Count; i++)
{
string current = all[i];
if(i == all.Count - 1)
{
list.Add(current);
break;            
}
if (current.Length < minLength)
{
for (int ii = 1; ii < maxGroupCount && i + ii < all.Count; ii++)
{
int nextIndex = i + ii;
string next = all[nextIndex];
current = current + next;
if (current.Length >= minLength || ii+1 == maxGroupCount)
{
list.Add(current);
i = nextIndex;
break;
}
}
}
else
{
list.Add(current);
}
}
return list.ToArray();
}

相关内容

  • 没有找到相关文章

最新更新