检查字符串中的特定字母

本文关键字:字符串 检查 | 更新日期: 2023-09-27 18:35:11

我正在尝试检查字符串中的第一个字母是否为 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);
    }
}

这些如果语句都不起作用,它们被完全跳过,为什么它们不起作用?

检查字符串中的特定字母

需要做的就是:

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

这将采取"美洲驼"并使其成为"ama"。如果您尝试获取"Llama"并获取"lama",请使用以下代码:

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

如果你的.文本[]不是排除18,那么它不会进入那里。

一旦你从你的结果中得到文本,就这样做。

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

我必须做:

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

只需使用 string.IndexOf ,它接受IgnoreCase参数,例如:

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

您将获得lSomething作为输出。

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

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

因此,要实际查看对 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);
}

你应该试试这个:

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

你可以按照你想要的方式使用这个表达式,而不是为布尔值赋值。

你有if (result.Text.Length == 18)行,你的字符串真的包含 18 个字符吗?