检查字符串中的特定字母

时间:2013-10-11 19:32:23

标签: c# .net string if-statement boolean

我正在尝试检查字符串中的第一个字母是否为l,l可以是大写或小写,如果是l我想从字符串中修剪它并且我当前正在使用此代码来执行此操作

String firstLetter = result.Text[0].ToString();
if (result.Text.Length == 18)
{
    if (firstLetter.Equals("l".ToString()) || firstLetter.Equals("L".ToString()))
    {
        result.Text.Remove(0, 1);
    }
    if (firstLetter == "l" || firstLetter == "L" || firstLetter == "1")
    {
        result.Text.Remove(0, 1);
    }
    if (result.Text.StartsWith("l".ToString()) || result.Text.ToUpper().StartsWith("L".ToString()))
    {
           result.Text.Remove(0, 1);
    }
}

这些if语句都不起作用,它们完全被忽略了,为什么它们不起作用?

6 个答案:

答案 0 :(得分:5)

您需要做的就是:

result = result.TrimStart({'L', 'l'});

这将采取“Llama”并使其成为“ama”。如果您尝试使用“Llama”并获得“lama”,请使用以下代码:

result = result.ToUpper().StartsWith("L") ? result.Remove(0,1) : result;

答案 1 :(得分:2)

如果您的.Text []不完全是18,那么它就不会进入那里。

一旦你从文本中得到任何结果就可以了。

if (firstLetter.Substring(0, 1).ToUpper() == "L")
        {
            // equals l so lets remove it
            firstLetter = firstLetter.Remove(0, 1);
        }

答案 2 :(得分:1)

你应该试试这个:

bool isFirstL = firstLetter.Substring(0, 1).ToUpper().Equals("L");

你可以按照你想要的方式使用这个表达式,而不是为bool指定值。

顺便说一句。你有一行if (result.Text.Length == 18)你的字符串真的包含18个字符吗?

答案 3 :(得分:1)

我必须这样做:

result = result.TrimStart(new char[] {'L', 'l'});

答案 4 :(得分:1)

在C#中,字符串类型设计为不可变的,这意味着您无法更改字符串实例。这来自documentation of the Remove method,强调我的:

  

返回一个新字符串,其中当前实例中从指定位置开始的指定数量的字符已被删除。

因此,要实际看到调用Remove的结果,您必须将其分配给某些内容,例如:

result.Text = result.Text.Remove(0, 1);

要查看字符串是否以L开头,最简洁的方法是使用StartsWith。整个代码都是这样的:

if (result.Text.Length == 18 &&
    result.Text.StartsWith("L", StringComparison.OrdinalIgnoreCase))
{
    result.Text = result.Text.Remove(0, 1);
}

答案 5 :(得分:1)

只需使用string.IndexOf,其中包含IgnoreCase参数,例如:

string firstLetter = "LlSomething";
if (firstLetter.IndexOf("l", StringComparison.InvariantCultureIgnoreCase) == 0 
        && firstLetter.Length > 0)
{
    firstLetter = firstLetter.Substring(1);
}

您将获得lSomething作为输出。