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

C#技术问询:如何获取整数字符串中指定数值的前序整数值

用C#实现需求的解决方案

这个需求拆解开来其实很容易实现,我们可以分步骤处理两个字符串,最终得到目标结果。下面是具体的思路和完整代码:

核心实现步骤

  • 将逗号分隔的字符串转换为整数数组,方便通过索引定位元素
  • 检查数组中是否包含数值5,若存在则找到它的索引位置
  • 确保5不是数组的第一个元素(避免越界),然后提取它的前一个元素
  • 对两个字符串分别执行上述逻辑,最后输出结果

完整代码示例

using System;

class Program
{
    static void Main()
    {
        string str1 = "1,2,4,5,6";
        string str2 = "2,5,8";
        
        // 处理第一个字符串,获取5的前一个数
        int? prevNum1 = GetPrevNumberBeforeTarget(str1, 5);
        // 处理第二个字符串
        int? prevNum2 = GetPrevNumberBeforeTarget(str2, 5);
        
        // 验证两个结果都有效后输出
        if (prevNum1.HasValue && prevNum2.HasValue)
        {
            Console.WriteLine($"{prevNum1.Value} 和 {prevNum2.Value}");
        }
        else
        {
            Console.WriteLine("存在字符串不包含5,或者5是该字符串的第一个元素");
        }
    }
    
    /// <summary>
    /// 从逗号分隔的整数字符串中,获取目标数值的前一个整数
    /// </summary>
    /// <param name="inputString">输入的逗号分隔字符串</param>
    /// <param name="targetNum">要查找的目标数值</param>
    /// <returns>目标数值的前一个整数,无有效结果则返回null</returns>
    static int? GetPrevNumberBeforeTarget(string inputString, int targetNum)
    {
        // 分割字符串并转换为整数数组
        int[] numArray = Array.ConvertAll(inputString.Split(','), int.Parse);
        
        // 找到目标数值的索引位置
        int targetIndex = Array.IndexOf(numArray, targetNum);
        
        // 确保目标存在且不是第一个元素
        if (targetIndex > 0)
        {
            return numArray[targetIndex - 1];
        }
        
        return null;
    }
}

代码细节说明

  1. 字符串转数组:用Split(',')拆分字符串为单个数字子串,再通过Array.ConvertAll批量转换为整数数组,这样就能利用数组的索引特性快速定位元素。
  2. 索引查找与边界检查:Array.IndexOf会返回目标值的索引,若找不到则返回-1;判断targetIndex > 0既保证了目标值存在,又避免了取numArray[-1]导致的越界异常。
  3. 可空返回值:用int?作为返回类型,能清晰处理"找不到目标值"或"目标值是第一个元素"的无效场景,方便后续判断输出。

运行这段代码后,就能得到你预期的输出:4 和 2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:42:43