首页 > 解决方案 > 按索引访问字符串字符,如果索引超出范围返回“”

问题描述

var myStr = "hello";
var chars = myStr.Split("");

chars.Select((letter, index) => {
     var nextLetter = myStr[index + 1];
     var nextNextLetter = myStr[index + 2];

     DoSomething(nextLetter, nextNextLetter);
});

如果给定一个大于它的长度的索引myStr会引发异常,我想要的是它""在超出它的索引时返回myStr。是否有一个字符串函数可以检查给定索引是否在范围内?

标签: c#

解决方案


您可以创建一个以安全方式返回值的函数。

private char GetValueSafe(string str, int index)
{
   if(index >= str.Length)
   {
      return '\0';
   }
   else 
   {
      return str[index];
   }
  
}

现在用法很简单:

var myStr = "hello";
var chars = myStr.Split("");

chars.Select((letter, index) => {
     var nextLetter = GetValueSafe(myStr, index + 1);
     var nextNextLetter = GetValueSafe(myStr,index + 2);

     DoSomething(nextLetter, nextNextLetter);
});

推荐阅读