この の質問を読んで、文字列の最初の文字 を取得しました。 C#の文字列から最初のn文字の数を取得する方法はありますか?
次のように Enumerable.Take を使用できます。
char[] array = yourStringVariable.Take(5).ToArray();
または、 String.Substring を使用することもできます。
string str = yourStringVariable.Substring(0,5);
String.Substring
は、文字列の長さが必要な文字数より短い場合に例外をスローする可能性があることを忘れないでください。
結果を文字列で返したい場合は、次のようにします。
文字列コンストラクタとLINQのTake
を使う
string firstFivChar = new string(yourStringVariable.Take(5).ToArray());
このアプローチの利点は、事前に長さをチェックすることではありません。
String.Substring
を使用することです。好きです:
string firstFivCharWithSubString =
!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
? yourStringVariable.Substring(0, 5)
: yourStringVariable;
部分文字列(int startIndex、int length)を使うことができます
string result = str.Substring(0,5);
部分文字列は指定された文字位置から始まり、指定された長さを持ちます。このメソッドは現在のインスタンスの値を変更しません。代わりに、現在の文字列のstartIndex位置から始まる長さ文字を含む新しい文字列を返します。 MSDN
ソース文字列が5文字未満の場合はどうなりますか?上記の方法を使用すると例外が発生します。文字列内の文字数が5より多いかどうかをチェックするための条件を設定してから、最初の5つをSubstringまで取得します。注意:firstFiveChar変数にソース文字列を割り当てました。 firstFiveCharは、文字数が5より小さい場合は変更されません。それ以外の場合、partは必要ありません。
string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
firstFiveChar = yourStringVariable.Substring(0, 5);
Substring()
を使うときどのように適切なチェックをするべきかについて誰も言及しなかったので、私はそれについて貢献したいと思いました。
Linq
を使用せずにSubstring()
を使用したくない場合は、文字列がSubstring()
関数の2番目のパラメータ(長さ)よりも大きいことを確認する必要があります。
最初の5文字が必要だとしましょう。このように適切にチェックしてください。
string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);
// firstFiveChars: "love" (4 characters)
このチェックがないと、Substring()
関数は存在しない文字を繰り返し処理するので例外をスローします。
私はあなたがアイデアを得ると思います...
.Substring(,)
の問題は、与えられた文字列が少なくとも要求された文字数の長さを持っていることを確認する必要があるということです、そうでなければArgumentOutOfRangeException
がスローされます。
解決策1( 'Substring'を使用):
var firstFive = stringValue != null ?
stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
null;
.Substring(
を使用する欠点は、与えられた文字列の長さをチェックする必要があるということです。
解決策2( 'Take'を使う):
var firstFive = stringValue != null ?
string.Join("", stringValue.Take(5)) :
null;
'Take'を使用すると、与えられた文字列の長さをチェックする必要がなくなります。
誰がこれを述べたのか私は知りません。しかし、これを達成するための最短かつ最も簡単な方法です。
string str = yourString.Remove(n);
n
- 必要な文字数
例
var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141
5つの空白文字を追加してから、最初の5文字を切り捨てて結果を切り捨てます。追加するスペースの数は、カットする数と一致している必要があります。 .Substring(0,X)
の前に括弧を入れるのを忘れないでください。
string str = (yourStringVariable + " ").Substring(0,5).Trim();
このテクニックを使えば、他の答えで言及されているArgumentOutOfRangeException
について心配する必要はありません。
string str = "GoodMorning"
string strModified = str.Substring(0,5);
PadRight関数を使用して、文字列が短くなり過ぎないようにし、必要なものをつかみ、最後から1つのステートメントでスペースをすべて削除します。
strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();
C#の文字列から最初のn文字を取得する
String yourstring="Some Text";
String first_n_Number_of_Characters=yourstring.Substring(0,n);
以下は、文字列が必要以上に大きいかどうかをチェックし、定義された最大文字数まで文字列を短くして「...」を追加する拡張メソッドです。
public static class StringExtensions
{
public static string Ellipsis(this string s, int charsToDisplay)
{
if (!string.IsNullOrWhiteSpace(s))
return s.Length <= charsToDisplay ? s : new string(s.Take(charsToDisplay).ToArray()) + "...";
return String.Empty;
}
}
または、 String.ToCharArray() を使用することもできます。
これは、パラメータとしてint startindex
およびint length
を取り、char[]
を返します。
new string(stringValue.ToCharArray(0,5))
それでも、文字列の長さが適切であることを確認する必要があります。そうしないとArgumentOutOfRangeException
がスローされます。
私が使う:
var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);
空白もチェックしたい場合はNullのみではなく)
var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue
任意のフィールドの最初の5文字だけが必要な場合、これはLeft Attributeによって実現できます。
Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""
Strが5未満の場合は、このコードをお試しください。
string strModified = str.Substring(0,str.Length>5?5:str.Length);