You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor数组短元素合并逻辑实现咨询:连续短元素最多合并3次

Blazor数组元素合并逻辑实现方案

实现步骤

  1. 编写合并逻辑方法:创建处理数组元素合并的方法,严格遵循「元素长度<4则合并至下一个,连续短元素最多合并3次」的规则。
  2. 修改参数更新逻辑:在OnParametersSet中拆分字符串后,立即调用合并方法处理titleList。
  3. 修正随机索引生成逻辑:确保随机索引适配处理后的数组长度,避免越界。

完整代码实现

@foreach (var titleIndex in randomtitle)  
{
    <span>@titleList[titleIndex]</span>
}

@code {
    [Parameter]
    public string theTitle { get; set; }
    private string[] titleList = Array.Empty<string>();

    protected override void OnParametersSet()
    {  
        if (!string.IsNullOrEmpty(theTitle))
        {
            var splitTitles = theTitle.Split(" ");
            titleList = MergeShortElements(splitTitles).ToArray();
        }
        else
        {
            titleList = Array.Empty<string>();
        }
    }

    private Random random = new();
    
    private IEnumerable<int> randomtitle =>
        titleList.Length >= 2 
            ? Enumerable.Range(0, titleList.Length)
                .OrderBy(x => random.Next())
                .Take(2)
                .ToList()
            : Enumerable.Empty<int>();

    // 核心合并逻辑方法
    private List<string> MergeShortElements(string[] originalArray)
    {
        var result = new List<string>();
        string currentMerge = string.Empty;
        int consecutiveShortCount = 0;

        foreach (var item in originalArray)
        {
            if (item.Length < 4)
            {
                currentMerge += (currentMerge.Length > 0 ? " " : "") + item;
                consecutiveShortCount++;

                // 达到最多连续合并3次(累计4个短元素),立即存入结果
                if (consecutiveShortCount == 3)
                {
                    result.Add(currentMerge);
                    currentMerge = string.Empty;
                    consecutiveShortCount = 0;
                }
            }
            else
            {
                // 先处理之前未完成的合并
                if (!string.IsNullOrEmpty(currentMerge))
                {
                    result.Add(currentMerge);
                    currentMerge = string.Empty;
                    consecutiveShortCount = 0;
                }
                result.Add(item);
            }
        }

        // 处理遍历结束后剩余的合并内容
        if (!string.IsNullOrEmpty(currentMerge))
        {
            result.Add(currentMerge);
        }

        return result;
    }
}

关键逻辑说明

  • 合并方法MergeShortElements:
    • 用currentMerge暂存待合并的短元素,consecutiveShortCount记录连续短元素数量。
    • 当连续短元素达到3个时(累计合并3次),立即将合并后的字符串存入结果列表,避免过度合并。
    • 遇到长度≥4的元素时,先清空之前的合并缓存,再将当前元素直接加入结果。
  • 随机索引生成:增加数组长度判断,当处理后的数组元素不足2个时返回空集合,避免越界错误。
  • UI渲染修正:修复原代码中<span>标签的闭合错误,确保渲染正常。

内容的提问来源于stack exchange,提问作者Arjun Ghimire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:36:53