文字列の最初の 3 文字を比較しようとしています。部分文字列を使用して比較しようとしています。
文字列は入力ファイルから読み取られ、文字列の長さは 3 文字ではない場合があります。文字列の長さが 3 文字でない場合、部分文字列メソッドで空の文字をスペースに置き換える必要があります。
どうすればそれを行うことができますか。
現在のコードは、文字列が十分に長くない場合に例外をスローします。
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);
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 ステートメントでそれらをインライン化することもできます。
この汚いハックを使用できます:
var res = (myStr+" ").Substring(...);