จะละเว้น 10 อักขระแรกของสตริงได้อย่างไร?
อินพุต:
str = "hello world!";
เอาท์พุต:
d!
จะละเว้น 10 อักขระแรกของสตริงได้อย่างไร?
อินพุต:
str = "hello world!";
เอาท์พุต:
d!
คำตอบ:
str = "hello world!";
str.Substring(10, str.Length-10)
คุณจะต้องทำการตรวจสอบความยาวมิฉะนั้นจะทำให้เกิดข้อผิดพลาด
str = str.Remove(0,10);
ลบ 10 อักขระแรก
หรือ
str = str.Substring(10);
สร้างสตริงย่อยโดยเริ่มจากอักขระที่ 11 ไปยังจุดสิ้นสุดของสตริง
สำหรับวัตถุประสงค์ของคุณควรทำงานเหมือนกัน
สตริงย่อยอาจเป็นสิ่งที่คุณต้องการตามที่คนอื่น ๆ ชี้ให้เห็น แต่เพียงเพื่อเพิ่มตัวเลือกอื่นในการผสม ...
string result = string.Join(string.Empty, str.Skip(10));
คุณไม่จำเป็นต้องตรวจสอบความยาวของสิ่งนี้! :) หากมีน้อยกว่า 10 ตัวอักษรคุณจะได้รับสตริงว่างเปล่า
Substring
มีสองวิธีการโอเวอร์โหลด:
public string Substring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.
public string Substring(int startIndex, int length);//The substring starts at a specified character position and taking length no of character from the startIndex.
ดังนั้นสำหรับสถานการณ์นี้คุณอาจใช้วิธีแรกดังนี้:
var str = "hello world!";
str = str.Substring(10);
ผลลัพธ์คือ:
d!
หากคุณสามารถใช้การเข้ารหัสป้องกันได้โดยตรวจสอบความยาว
Substring
มีพารามิเตอร์ที่เรียกว่า startIndex ตั้งค่าตามดัชนีที่คุณต้องการเริ่มต้น
คุณสามารถลบ Char โดยใช้บรรทัดด้านล่าง
: - ขั้นแรกให้ตรวจสอบว่าสตริงนั้นมีอักขระเพียงพอที่จะลบออกเช่น
string temp="Hello Stack overflow";
if(temp.Length>10)
{
string textIWant = temp.Remove(0, 10);
}
ใช้วิธีการสตริงย่อย
string s = "hello world";
s=s.Substring(10, s.Length-10);
คุณสามารถใช้เมธอดSubstring method ที่รับพารามิเตอร์เดียวซึ่งเป็นดัชนีที่จะเริ่มต้น
ในรหัสของฉันด้านล่างฉันจัดการกับกรณีคือความยาวน้อยกว่าดัชนีเริ่มต้นที่คุณต้องการและเมื่อความยาวเป็นศูนย์
string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
สำหรับ:
var str = "hello world!";
หากต้องการรับสตริงผลลัพธ์ที่ไม่มีอักขระ 10 ตัวแรกและสตริงว่างหากสตริงมีความยาวน้อยกว่าหรือเท่ากับ 10 คุณสามารถใช้:
var result = str.Length <= 10 ? "" : str.Substring(10);
หรือ
var result = str.Length <= 10 ? "" : str.Remove(0, 10);
ตัวแปรแรกที่ต้องการเนื่องจากต้องการพารามิเตอร์วิธีการเดียวเท่านั้น
ไม่จำเป็นต้องระบุความยาวลงในSubstring
วิธีการ ดังนั้น:
string s = hello world;
string p = s.Substring(3);
p
จะ:
"แท้จริงโลก".
ข้อยกเว้นเดียวที่คุณต้องรองรับคือArgumentOutOfRangeException
ถ้า
startIndex
น้อยกว่าศูนย์หรือมากกว่าความยาวของอินสแตนซ์นี้
เริ่มจาก C # 8 คุณก็สามารถใช้ Range Operator ได้ เป็นวิธีที่มีประสิทธิภาพและดีกว่าในการจัดการกรณีดังกล่าว
string AnString = "Hello World!";
AnString = AnString[10..];
C# 8
.NET Framework
ไม่สนับสนุนเมื่อกำหนดเป้าหมาย
การโทรจะSubString()
จัดสรรสตริงใหม่ เพื่อประสิทธิภาพสูงสุดคุณควรหลีกเลี่ยงการจัดสรรพิเศษนั้น เริ่มต้นด้วยC# 7.2
คุณสามารถใช้ประโยชน์จากรูปแบบSpan
เมื่อกำหนดเป้าหมาย.NET Framework
ให้รวมแพ็คเกจSystem.Memory NuGet
สำหรับ.NET Core
โครงการนี้ใช้งานได้นอกกรอบ
static void Main(string[] args)
{
var str = "hello world!";
var span = str.AsSpan(10); // No allocation!
// Outputs: d!
foreach (var c in span)
{
Console.Write(c);
}
Console.WriteLine();
}