Dizenin ilk karakterini almak için bu soruyu okudum . C # 'da bir dizeden ilk n karakter sayısını almanın bir yolu var mı?
Dizenin ilk karakterini almak için bu soruyu okudum . C # 'da bir dizeden ilk n karakter sayısını almanın bir yolu var mı?
Yanıtlar:
Sen kullanabilirsiniz Enumerable.Take gibi:
char[] array = yourStringVariable.Take(5).ToArray();
Veya String.Substring'i kullanabilirsiniz .
string str = yourStringVariable.Substring(0,5);
String.Substring
Dize uzunluğunun gerekli karakterlerden daha az olması durumunda bunun bir istisna oluşturabileceğini unutmayın .
Sonucu dizge olarak geri almak istiyorsanız, şunu kullanabilirsiniz:
String Constructor ve LINQ'ları kullanma Take
string firstFivChar = new string(yourStringVariable.Take(5).ToArray());
Yaklaşımdaki artı, elden önce uzunluğu kontrol etmek değildir.
String.Substring
hata kontrolü ile kullanmaktırsevmek:
string firstFivCharWithSubString =
!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
? yourStringVariable.Substring(0, 5)
: yourStringVariable;
IsNullOrWhiteSpace
burada yanlış. 10 boşluklu bir dize düşünün - kodunuz tüm 10'u döndürecektir. IsNullOrEmpty
Bunun yerine kullanın . ( IsNullOrWhiteSpace
Başka bir testle birleştirmek iyi değildir ; Bunun yerine null + boş için test edin, o Trim
zaman bu davranış belirtilmişse, o zaman gereken testleri / işlemleri yapın.)
Sen kullanabilirsiniz alt dize (int startIndex, int uzunluk)
string result = str.Substring(0,5);
Alt dize, belirtilen bir karakter konumunda başlar ve belirli bir uzunluğa sahiptir. Bu yöntem, geçerli örneğin değerini değiştirmez. Bunun yerine, geçerli dizedeki startIndex konumundan başlayarak uzunluk karakterlerine sahip yeni bir dize döndürür, MSDN
Ya kaynak dizge beş karakterden azsa? Yukarıdaki yöntemi kullanarak istisna elde edeceksiniz. Dizedeki karakter sayısının 5'ten fazla olup olmadığını kontrol etmek için koşul koyabiliriz, ardından Substring aracılığıyla ilk beşi alabiliriz. Not firstFiveChar değişkenine kaynak dizeyi atadım. Karakterler 5'ten küçükse firstFiveChar değişmez, bu nedenle bölüm gerekli değildir.
string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
firstFiveChar = yourStringVariable.Substring(0, 5);
Kullanırken doğru kontrollerin nasıl yapılacağından kimse bahsetmedi Substring()
, bu yüzden buna katkıda bulunmak istedim.
Kullanmak Linq
ve devam etmek istemiyorsanız Substring()
, dizenizin Substring()
işlevin ikinci parametresinden (uzunluk) daha büyük olduğundan emin olmalısınız .
Diyelim ki ilk 5 karaktere ihtiyacınız var. Bunları aşağıdaki gibi uygun bir kontrolle almalısınız:
string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);
// firstFiveChars: "love" (4 characters)
Bu kontrol olmasaydı, Substring()
işlev, orada olmayan harfleri yinelediği için bir istisna atardı.
Sanırım anladın ...
Buradaki sorun .Substring(,)
, verilen dizenin en azından istenen sayıda karakter uzunluğuna sahip olduğundan emin olmanız gerektiğidir, aksi takdirde bir ArgumentOutOfRangeException
atılır.
1.Çözüm ('Alt Dize' kullanarak):
var firstFive = stringValue != null ?
stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
null;
Kullanmanın dezavantajı .Substring(
, verilen dizenin uzunluğunu kontrol etmeniz gerekmesidir.
2. Çözüm ('Take' kullanarak):
var firstFive = stringValue != null ?
string.Join("", stringValue.Take(5)) :
null;
'Al'ı kullanmak , verilen dizginin uzunluğunu kontrol etmenizi engelleyecektir.
Dizenin çok kısa olmasını önlemek için PadRight işlevini kullanın, ihtiyacınız olanı alın ve ardından sondaki boşlukları tek bir ifadede kesin.
strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();
Neden kimsenin bundan bahsettiğini bilmiyorum. Ancak bunu başarmanın en kısa ve en basit yolu.
string str = yourString.Remove(n);
n
- ihtiyacınız olan karakter sayısı
Misal
var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141
Beş boşluk karakteri ekleyin, ardından ilk beş karakteri kesin ve sonucu kesin. Eklediğiniz boşluk sayısı, kestiğiniz sayı ile eşleşmelidir. Parantezi .Substring(0,X)
eklediğinizden emin olun, aksi takdirde hiçbir şey eklemezsiniz.
string str = (yourStringVariable + " ").Substring(0,5).Trim();
Bu teknikle ArgumentOutOfRangeException
, diğer cevaplarda bahsedilenler için endişelenmenize gerek kalmayacak .
string str = "GoodMorning"
string strModified = str.Substring(0,5);
C # 8.0'da bunu yapmanın yeni bir yolu var: Menzil operatörleri
Ya da onları aramayı sevdiğim gibi, Pandas dilimleri.
Eski yol:
string newString = oldstring.Substring(0, 5);
Yeni yol:
string newString = oldstring[..5];
İlk bakışta daha kısa kod için okunabilirlik konusunda oldukça kötü bir değiş tokuş gibi görünen ancak yeni özellik size
bunun gibi harika şeyler:
var dilim1 = liste [2 .. ^ 3]; // list [Range.Create (2, Index.CreateFromEnd (3))]
var dilim2 = liste [.. ^ 3]; // list [Range.ToEnd (Index.CreateFromEnd (3))]
var slice3 = liste [2 ..]; // list [Range.FromStart (2)]
var slice4 = liste [..]; // [Range.All] listele
C # 'da bir dizeden ilk n karakter sayısını almak için
String yourstring="Some Text";
String first_n_Number_of_Characters=yourstring.Substring(0,n);
Aşağıda, bir dizenin gerekenden daha büyük olup olmadığını kontrol eden ve dizeyi tanımlanan maksimum karakter miktarına kısaltan ve '...' ekleyen bir uzantı yöntemi bulunmaktadır.
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;
}
}
In C # 8.0 Eğer şöyle bir dize ilk beş karakteri alabilirsiniz
string str = data[0..5];
Endeksler ve Aralıklar hakkında daha fazla bilgi burada
Kullanırım:
var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);
veya Whitespace'i de kontrol etmek istiyorsanız alternatif (yalnızca Null yerine):
var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue
Veya String.ToCharArray () kullanabilirsiniz . Parametre olarak
alır int startindex
ve alır ve int length
birchar[]
new string(stringValue.ToCharArray(0,5))
Yine de dizenin uygun uzunluğa sahip olduğundan emin olmanız gerekir, aksi takdirde bir ArgumentOutOfRangeException
Lütfen str 5'ten küçük olduğunda bu kodu deneyin.
string strModified = str.Substring(0,str.Length>5?5:str.Length);
Herhangi bir alandan sadece ilk 5 karakter istiyorsak, bu Sol Nitelik ile sağlanabilir.
Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""
Aşağıdaki kodu deneyin
string Name = "Abhishek";
string firstfour = Name.Substring(0, 4);
Response.Write(firstfour);
Yukarıdaki cevapları denedim ve bence en iyisi bu
@item.First_Name.Substring(0,1)
Bunda dizenin ilk harfini alabilirim
char
** lar hakkında soru soruyorsunuz ve siz ** karakterleri soruyorsunuz . Aynı şey değiller.𣊾
ve𣇞
daha dün kullanmam gereken iki karakter var, bu da C # ile yazılan yazılımda başarısız oldu çünkü programcı achar
ve bir karakter arasındaki farkı bilmiyordu . Bu tuzağa düşmeyin!