确定字符串的第一个字符是高还是低

时间:2015-10-02 19:00:48

标签: c# string char

我试图确定"句子"的第一个字符。字符串是资本与否。程序运行正常,但测试运行会给出数组索引超出范围的错误。我无法理解这个问题。

public class CapitalOrNot
{
    public static void Main()
    {
        string sentence = "Asdafasda";
        string UpOrLow = UpperOrLower(sentence);
        Console.WriteLine("First char is " + UpOrLow);
    }

    public static string UpperOrLower(string mj)
    {
        if (char.IsUpper(mj[0]))
        {
            mj = "upper";
        }
        else mj = "lower";

        return mj;
    }
}

4 个答案:

答案 0 :(得分:5)

你应该检查字符串是否为空:

 public static string UpperOrLower(string mj)
 {
     if (string.IsNullOrEmpty(mj))
         return "bad input";

     return char.IsUpper(mj[0]) ? "upper" : "lower";
 }

答案 1 :(得分:1)

使用空条件运算符的解决方案:

public static string UpperOrLower(string str)
{
    return (str?.Any()).GetValueOrDefault() ? (Char.IsUpper(str.First()) ? "upper" : "lower") : "bad input";
}

答案 2 :(得分:0)

这个怎么样?

public class CapitalOrNot
{
    public static void Main()
    {
        string sentence = "Asdafasda";

        if(sentence.Length > 0 && sentence != null)
        {
            string UpOrLow = UpperOrLower(sentence);
            Console.WriteLine("First char is " + UpOrLow);
        }
        else
        {
           Console.WriteLine("You did not input a sentence");
        }
    }

    public static string UpperOrLower(string mj)
    {
        if (char.IsUpper(mj[0]))
        {
            mj = "upper";
        }
        else mj = "lower";

        return mj;
    }
}

答案 3 :(得分:0)

当您调用UpperOrLower而没有任何值时会出现问题,它会引发异常,以解决您可以执行类似下面代码的操作。

    public static string UpperOrLower(string mj)
    {
        if (string.IsNullOrEmpty(mj))
        {
            if (char.IsUpper(mj[0]))
            {
                mj = "upper";
            }
            else mj = "lower";
        }
        else
        {
            mj = "empty";
        }
        return mj;
    }

问候。