ฉันมีสิ่งต่อไปนี้:
string test = "9586-202-10072"
ฉันจะทำให้อักขระทั้งหมดอยู่ทางขวาของลำดับสุดท้ายได้-อย่างไร 10072 จำนวนอักขระจะแตกต่างกันทางด้านขวาของขีดสุดท้ายเสมอ
จะทำได้อย่างไร?
ฉันมีสิ่งต่อไปนี้:
string test = "9586-202-10072"
ฉันจะทำให้อักขระทั้งหมดอยู่ทางขวาของลำดับสุดท้ายได้-อย่างไร 10072 จำนวนอักขระจะแตกต่างกันทางด้านขวาของขีดสุดท้ายเสมอ
จะทำได้อย่างไร?
คำตอบ:
คุณสามารถรับตำแหน่งสุดท้าย-ด้วยstr.LastIndexOf('-'). ดังนั้นขั้นตอนต่อไปจึงชัดเจน:
var result = str.Substring(str.LastIndexOf('-') + 1);
การแก้ไข :
ดังที่ Brian ระบุไว้ด้านล่างการใช้สิ่งนี้กับสตริงที่ไม่มีขีดกลางจะส่งผลให้สตริงเดียวกันถูกส่งกลับ
LastIndexOfจะคืนค่า -1 หากไม่พบอะไร (นี่คือพฤติกรรมที่มีการบันทึกไว้ดังนั้นจึงปลอดภัยที่จะพึ่งพา) str.Substring(1-1)ให้สตริงเท่ากับstr. ไม่น่าแปลกใจที่นี่
คุณสามารถใช้ LINQ และช่วยตัวเองในการแยกวิเคราะห์อย่างชัดเจน:
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
string tail = test.Substring(test.LastIndexOf('-') + 1);
YourString.Substring(YourString.LastIndexOf("-"));
ฉันเห็นว่าโพสต์นี้ถูกดูมากกว่า 46,000 ครั้ง ฉันจะพนันได้เลยว่าผู้ชม 46,000 คนถามคำถามนี้เพียงเพราะต้องการชื่อไฟล์ ... และคำตอบเหล่านี้อาจเป็นโพรงกระต่ายได้หากคุณไม่สามารถสร้างสตริงย่อยได้ทุกคำโดยใช้เครื่องหมาย at
หากคุณต้องการรับชื่อไฟล์ก็มีคำตอบง่ายๆที่ควรกล่าวถึงที่นี่ แม้ว่าจะไม่ใช่คำตอบที่แม่นยำสำหรับคำถามก็ตาม
result = Path.GetFileName(fileName);
ดูhttps://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
ดูวิธีString.lastIndexOf
test.Substring(test.LastIndexOf("-"))
string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");
if (indexOfHyphen >= 0)
{
string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
Console.WriteLine(contentAfterLastHyphen );
}
ฉันสร้างส่วนขยายสตริงสำหรับสิ่งนี้หวังว่าจะช่วยได้
public static string GetStringAfterChar(this string value, char substring)
{
if (!string.IsNullOrWhiteSpace(value))
{
var index = value.LastIndexOf(substring);
return index > 0 ? value.Substring(index + 1) : value;
}
return string.Empty;
}
strเป็นโมฆะหรือไม่มียัติภังค์เลย (ในกรณีที่ไม่มียัติภังค์จะไม่โยนมันจะส่งคืนสตริงต้นทางทั้งหมด)