检查字符串中的特定字母
本文关键字:字符串 检查 | 更新日期: 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 个字符吗?