4

文字列の最初の 3 文字を比較しようとしています。部分文字列を使用して比較しようとしています。

文字列は入力ファイルから読み取られ、文字列の長さは 3 文字ではない場合があります。文字列の長さが 3 文字でない場合、部分文字列メソッドで空の文字をスペースに置き換える必要があります。

どうすればそれを行うことができますか。

現在のコードは、文字列が十分に長くない場合に例外をスローします。

4

3 に答える 3

9

String.PadRightを使用する

myString.PadRight(3, ' ');
// do SubString here..

文字列が十分に大きくない場合に例外をスローしない.Left拡張メソッドを作成することもできます。

public static string Left(this string s, int len)
{
    if (len == 0 || s.Length == 0)
        return "";
    else if (s.Length <= len)
        return s;
    else
        return s.Substring(0, len);
}

使用法:

myString.Left(3);
于 2012-04-17T01:29:16.027 に答える
5

Substring()を呼び出す前に、String.PadRight() メソッドのいずれかを使用します。

string subString = myString.PadRight(3).Substring(0,3);

上記のように 1 つのパラメーターでオーバーロードを使用すると、スペースが挿入されます。

string subString1 = string1.PadRight(3).Substring(0,3);
string subString2 = string2.PadRight(3).Substring(0,3);
if (String.Compare(subString1, subString2) == 0)
{
    // if equal
}
else
{
    // not equal
}

もう少し読みやすいので、別の変数を使用しましたが、必要に応じて if ステートメントでそれらをインライン化することもできます。

于 2012-04-17T01:31:03.497 に答える
4

この汚いハックを使用できます:

var res = (myStr+"    ").Substring(...);
于 2012-04-17T01:29:59.987 に答える