0

文字列の最初の文字が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 ステートメントはどれも機能していません。完全にスキップされています。なぜ機能していないのですか?

4

6 に答える 6

5

あなたがする必要があるのは、次のとおりです。

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

これは「Llama」を「ama」にします。「ラマ」を取得して「ラマ」を取得しようとしている場合は、次のコードを使用します。

result = result.ToUpper().StartsWith("L") ? result.Remove(0,1) : result;
于 2013-10-11T19:34:13.797 に答える
2

.Text[] が正確に 18 でない場合、そこには入りません。

結果が何であれ、テキストを取得したら、これを行うだけです。

if (firstLetter.Substring(0, 1).ToUpper() == "L")
        {
            // equals l so lets remove it
            firstLetter = firstLetter.Remove(0, 1);
        }
于 2013-10-11T19:42:41.607 に答える
1

これを試してください:

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

この式は、bool に値を代入するのではなく、好きなように使用できます。

ところで。あなたif (result.Text.Length == 18)の文字列には本当に18文字が含まれていますか?

于 2013-10-11T19:42:21.380 に答える
1

私がしなければなりませんでした:

result = result.TrimStart(new char[] {'L', 'l'});
于 2013-10-11T19:43:25.157 に答える
1

C# では、文字列型は不変になるように設計されています。つまり、文字列インスタンスを変更することはできません。これは、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);
}
于 2013-10-11T19:43:43.913 に答える
1

次のように、パラメータstring.IndexOfを取る を使用するだけです。IgnoreCase

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

出力として得lSomethingられます。

于 2013-10-11T19:46:55.693 に答える