ฉันต้องการลบอักขระสามตัวสุดท้ายออกจากสตริง:
string myString = "abcdxxx";
โปรดทราบว่าสตริงเป็นข้อมูลแบบไดนามิก
ฉันต้องการลบอักขระสามตัวสุดท้ายออกจากสตริง:
string myString = "abcdxxx";
โปรดทราบว่าสตริงเป็นข้อมูลแบบไดนามิก
คำตอบ:
อ่านอักขระ 3 ตัวสุดท้ายจากสตริง [คำถามที่ถามเบื้องต้น]
คุณสามารถใช้string.Substringและให้ดัชนีเริ่มต้นและมันจะได้สตริงย่อยเริ่มจากดัชนีที่กำหนดจนถึงจุดสิ้นสุด
myString.Substring(myString.Length-3)
ดึงสตริงย่อยจากอินสแตนซ์นี้ สตริงย่อยเริ่มต้นที่ตำแหน่งอักขระที่ระบุ MSDN
แก้ไขสำหรับโพสต์ที่อัปเดต
ลบอักขระ 3 ตัวสุดท้ายออกจากสตริง [คำถามที่อัปเดต]
ในการลบช่วงสามตัวละครจากสตริงที่คุณสามารถใช้string.Substring (Int32, Int32)และให้มันเริ่มต้นดัชนี0และสิ้นสุดดัชนีสามน้อยกว่าความยาวสตริง มันจะได้รับสตริงย่อยก่อนอักขระสามตัวสุดท้าย
myString = myString.Substring(0, myString.Length-3);
วิธี String.Substring (Int32, Int32)
ดึงสตริงย่อยจากอินสแตนซ์นี้ สตริงย่อยเริ่มต้นที่ตำแหน่งอักขระที่ระบุและมีความยาวที่ระบุ
คุณยังสามารถใช้วิธีString.Remove (Int32)เพื่อลบอักขระสามตัวสุดท้ายโดยส่งดัชนีเริ่มต้นเป็นความยาว - 3มันจะลบจากจุดนี้ไปยังจุดสิ้นสุดของสตริง
myString = myString.Remove(myString.Length-3)
ส่งคืนสตริงใหม่ซึ่งอักขระทั้งหมดในอินสแตนซ์ปัจจุบันเริ่มต้นที่ตำแหน่งที่ระบุและดำเนินการต่อไปจนถึงตำแหน่งสุดท้ายถูกลบ
myString = myString.Remove(myString.Length - 3, 3);
ฉันอ่านสิ่งเหล่านี้ทั้งหมด แต่ต้องการอะไรที่หรูหรากว่านี้ เพียงเพื่อลบอักขระจำนวนหนึ่งออกจากส่วนท้ายของสตริง:
string.Concat("hello".Reverse().Skip(3).Reverse());
เอาท์พุท:
"he"
Enumerable.Reverseบัฟเฟอร์สตริงเป็น a char[]จากนั้นจึงบัฟเฟอร์ใหม่char[]ที่สั้นกว่า 3 จากนั้นจึงสร้างใหม่string(โดยมีอีกอันภายในchar[]) แนวทางที่ดีกว่าnew string("hello".Reverse().Skip(3))คือหรือเพียงแค่เขียนฟังก์ชันส่วนขยายสตริงของคุณเองAllBut(this string in, int i)ที่ใช้ Substring
Lengthถูกเก็บไว้
.SkipLast(n)ตอนนี้เรายังมี ไม่ต้องถอยหลังอะไร "hello".SkipLast(3)ให้"he"
myString.Remove(myString.Length-3);
myString = myString.Remove(myString.Length - 3)นั่นคือ.
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
คุณสามารถใช้String.Removeเพื่อลบจากตำแหน่งที่ระบุไปยังจุดสิ้นสุดของสตริง
myString = myString.Remove(myString.Length - 3);
อาจไม่ใช่สิ่งที่คุณกำลังมองหาเนื่องจากคุณบอกว่ามันเป็น "ข้อมูลไดนามิก" แต่เมื่อพิจารณาจากสตริงตัวอย่างแล้วสิ่งนี้ก็ใช้ได้เช่นกัน:
? "abcdxxx".TrimEnd('x');
"abc"
str= str.Remove(str.Length - 3);
myString.Substring(myString.Length - 3, 3)
นี่คือตัวอย่างของสตริงย่อย >>
http://www.dotnetperls.com/substring
อ้างถึงสิ่งเหล่านั้น
string myString = "abcdxxx";
if (myString.Length<3)
return;
string newString=myString.Remove(myString.Length - 3, 3);
ลบอักขระสุดท้ายออกจากสตริง
TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)
.Text.Remove(10)// ใช้เพื่อลบข้อความเริ่มตั้งแต่ดัชนี 10 ถึงจุดสิ้นสุด
ตัวดำเนินการช่วง C # 8.0 ใหม่สามารถเป็นทางลัดที่ดีในการบรรลุเป้าหมายนี้
ตัวอย่าง:
var shortenedString = myString[0..^1]
items.Remove(items.Length - 3)
string.Remove()ลบรายการทั้งหมดจากดัชนีนั้นไปยังจุดสิ้นสุด items.length - 3รับดัชนี 3 ตัวอักษรจากจุดสิ้นสุด
ง่าย. text = text.remove(text.length - 3). ฉันลบ 3 เนื่องจากRemoveฟังก์ชันลบรายการทั้งหมดจากดัชนีนั้นไปยังจุดสิ้นสุดของสตริงซึ่งเป็นtext.lengthฟังก์ชั่นลบรายการทั้งหมดจากดัชนีที่ไปยังจุดสิ้นสุดของสตริงซึ่งเป็นดังนั้นถ้าฉันลบ 3 แล้วฉันจะเอาสตริงที่มีอักขระ 3 ตัวออกจากมัน
คุณสามารถสรุปสิ่งนี้เพื่อลบได้ aอักขระออกจากท้ายสตริงได้ดังนี้:
text = text.remove(text.length - a)
สิ่งที่ฉันทำคือตรรกะเดียวกัน removeฟังก์ชั่นลบรายการทั้งหมดจากภายในของตนไปยังจุดสิ้นสุดของสตริงที่มีความยาวของข้อความ ดังนั้นถ้าฉันลบออกaจากความยาวของสตริงที่จะให้สตริงกับฉันaอักขระลบออก
ดังนั้นมันจึงไม่ได้ผลแค่ 3 เท่านั้น แต่ใช้ได้กับจำนวนเต็มบวกทั้งหมดยกเว้นถ้าความยาวของสตริงน้อยกว่าหรือเท่ากับaในกรณีนั้นมันจะส่งคืนจำนวนลบหรือ 0