Bir dizeden son üç karakteri kaldırmak istiyorum:
string myString = "abcdxxx";
Dizenin dinamik veri olduğuna dikkat edin.
Bir dizeden son üç karakteri kaldırmak istiyorum:
string myString = "abcdxxx";
Dizenin dinamik veri olduğuna dikkat edin.
Yanıtlar:
dizeden son 3 karakteri oku [Başlangıçta sorulan soru]
String.Substring'i kullanabilir ve ona başlangıç dizinini verebilirsiniz; o, verilen dizinden başlayarak sonuna kadar alt dizeyi alır.
myString.Substring(myString.Length-3)
Bu örnekten bir alt dizeyi alır. Alt dize, belirtilen bir karakter konumunda başlar. MSDN
Düzenleme güncel yazı için,
Dizeden son 3 karakteri kaldır [Güncellenen soru]
Dizeden son üç karakteri kaldırmak için string.Substring (Int32, Int32) kullanabilir ve ona başlangıç dizini 0ve bitiş dizinini dize uzunluğundan üç daha az olarak verebilirsiniz . Alt dizeyi son üç karakterden önce alır.
myString = myString.Substring(0, myString.Length-3);
String.Substring Yöntemi (Int32, Int32)
Bu örnekten bir alt dizeyi alır. Alt dize, belirtilen bir karakter konumunda başlar ve belirli bir uzunluğa sahiptir.
Ayrıca kullanarak yapabilirsiniz String.Remove (Int32) olarak başlangıç indeksi geçirerek son üç karakterleri kaldırmak için yöntem uzunluğu - 3 , bu dizenin sonuna kadar bu noktadan itibaren kaldıracak.
myString = myString.Remove(myString.Length-3)
Belirtilen konumdan başlayıp son konuma kadar devam eden geçerli örnekteki tüm karakterlerin silindiği yeni bir dize döndürür
Tüm bunları okudum ama biraz daha şık bir şey istedim. Bir dizenin sonundan belirli sayıda karakteri kaldırmak için:
string.Concat("hello".Reverse().Skip(3).Reverse());
çıktı:
"he"
Enumerable.Reversedizeyi a'ya tamponladığı için char[], daha sonra char[]3 daha kısa olan yeni bir tampon haline getirdiği ve ardından yeni string(dahili olarak bir başkasıyla char[]) oluşturduğu için yine de daha yavaştır . Daha iyi bir yaklaşım new string("hello".Reverse().Skip(3)), veya sadece AllBut(this string in, int i)Substring kullanan kendi dize uzantısı işlevinizi yazmak olabilir.
Lengthsaklandığı yer vardır.
.SkipLast(n). Hiçbir şeyi tersine çevirmeye gerek yok. "hello".SkipLast(3)verir"he"
myString.Remove(myString.Length-3);
myString = myString.Remove(myString.Length - 3)yani.
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
String.RemoveDizenin belirli bir konumdan sonuna kadar silmek için kullanabilirsiniz .
myString = myString.Remove(myString.Length - 3);
Muhtemelen "dinamik veri" olduğunu söylediğiniz için aradığınız şey tam olarak bu olmayabilir, ancak örnek dizeniz göz önüne alındığında, bu da işe yarar:
? "abcdxxx".TrimEnd('x');
"abc"
myString.Substring(myString.Length - 3, 3)
İşte alt dizeyle ilgili örnekler. >>
http://www.dotnetperls.com/substring
Bunlara bakın.
Bir dizeden son karakterleri kaldırın
TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)
.Text.Remove(10)// 10. dizinden sonuna kadar metni kaldırmak için kullanılır
Kolay. text = text.remove(text.length - 3). 3 çıkardım çünkü Removeişlev tüm öğeleri o dizinden olan dizenin sonuna kadar kaldırır text.length. Yani 3 çıkarırsam, 3 karakter çıkarılmış dizeyi elde ederim.
Bunu adizenin sonundaki karakterleri kaldırarak şu şekilde genelleştirebilirsiniz :
text = text.remove(text.length - a)
Yani yaptığım şey aynı mantıktı. removeFonksiyon metnin uzunluğu dizenin sonuna kadar onun içeriden tüm öğeleri kaldırır. Öyleyse a, dizenin uzunluğundan çıkarırsam , bu bana akarakterleri kaldırılmış dizeyi verecek .
Yani sadece 3 için çalışmaz, tüm pozitif tamsayılar için çalışır, dize uzunluğunun daha az veya ona eşit olması dışında a, bu durumda negatif bir sayı veya 0 döndürür.