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

如何查找字符串中多个字符的首次出现并简化现有C#实现代码

解决方案

你原有代码存在逻辑漏洞:IndexOf 方法在找不到对应字符时会返回 -1,如果目标字符串中仅存在两个字符中的一个,原有判断会得到错误结果。

C# 内置的 string.IndexOfAny 方法完全匹配你的需求,该方法支持传入字符数组,返回第一个匹配到的字符的索引,还天然支持后续扩展更多判断字符:

string userInput = Console.ReadLine();
char[] targetChars = { '+', '-' };

int matchIndex = userInput.IndexOfAny(targetChars);
// 若两个字符都不存在,可根据业务需求调整默认返回值
char firstFound = matchIndex >= 0 ? userInput[matchIndex] : '\0';

如果仅需要判断固定两个字符,也可以用更简短的元组模式匹配写法:

char firstFound = (userInput.IndexOf('+'), userInput.IndexOf('-')) switch
{
    (< 0, < 0) => '\0', // 两个字符都不存在的场景
    (>= 0, < 0) => '+',
    (< 0, >= 0) => '-',
    (var i1, var i2) => i1 < i2 ? '+' : '-'
};

方案对比

  • IndexOfAny 方案可读性、扩展性最优,后续新增判断字符仅需要修改 targetChars 数组即可,不需要调整逻辑,优先推荐使用
  • 元组模式匹配的写法适合固定两个判断字符的场景,无需额外声明数组,代码更紧凑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:04