ลบอักขระเฉพาะสุดท้ายในสตริง c #


88

ฉันใช้ WinForms c # ฉันมีค่าสตริงดังต่อไปนี้

string Something = "1,5,12,34,";

ฉันต้องการลบเครื่องหมายจุลภาคสุดท้ายในสตริง แล้วฉันจะลบมันได้อย่างไร?


16
ทำไมคุณถึงมีstring? ฉันคิดว่าเป็นเพราะลูปที่ต่อคอมมาสกับints คุณสามารถใช้string.Join(",", ints)แทน ซึ่งจะหลีกเลี่ยงเครื่องหมายจุลภาคต่อท้ายในตอนแรก
Tim Schmelter

คำตอบ:


262

ลองstring.TrimEnd():

Something = Something.TrimEnd(',');

5
นี่เป็นทางออกที่ดีที่สุดเพราะใช้ได้กับทุกสตริงรวมถึงสถานการณ์ที่คุณไม่รู้ล่วงหน้าหากสตริงนั้นลงท้ายด้วยเครื่องหมายจุลภาคหรือไม่
East of Nowhere

6
นี่คือเหตุผลที่ฉันยังคงค้นหาวิธีแก้ปัญหาแม้จะเขียนเองได้ง่ายๆก็ตาม มักจะมีคนอื่นแก้ไขให้ :)
dpberry178

1
ดังนั้นคำพูดเดียวจึงไม่ผิดพลาด วันนี้ฉันเรียนรู้ char และ string ถูกกำหนดด้วยใบเสนอราคาเดี่ยวและคู่ตามลำดับ
egmfrs

20

คำตอบของ King Kingนั้นถูกต้องแน่นอน นอกจากนี้ความคิดเห็นของ Tim Schmelter ก็เป็นข้อเสนอแนะที่ดีในกรณีของคุณ

แต่ถ้าคุณต้องการลบลูกน้ำสุดท้ายในสตริงจริงๆ คุณควรหาดัชนีของลูกน้ำตัวสุดท้ายแล้วลบ like;

string s = "1,5,12,34,12345";
int index = s.LastIndexOf(',');
Console.WriteLine(s.Remove(index, 1));

ผลลัพธ์จะเป็น;

1,5,12,3412345

นี่คือdemonstration.

ไม่น่าเป็นไปได้มากที่คุณต้องการแบบนี้ แต่ฉันต้องการชี้ให้เห็น และอย่าลืมว่าString.Removemethod ไม่ได้ลบอักขระใด ๆ ในสตริงเดิม แต่จะส่งคืนสตริงใหม่



3

วิธีการ TrimEnd รับอาร์เรย์อักขระอินพุตไม่ใช่สตริง โค้ดด้านล่างจากDot Net Perlsแสดงตัวอย่างที่มีประสิทธิภาพมากขึ้นเกี่ยวกับวิธีการทำงานเช่นเดียวกับ TrimEnd

static string TrimTrailingChars(string value)
{
    int removeLength = 0;
    for (int i = value.Length - 1; i >= 0; i--)
    {
        char let = value[i];
        if (let == '?' || let == '!' || let == '.')
        {
            removeLength++;
        }
        else
        {
            break;
        }
    }
    if (removeLength > 0)
    {
        return value.Substring(0, value.Length - removeLength);
    }
    return value;
}

1

หรือคุณสามารถแปลงเป็น Char Array ก่อนโดย:

string Something = "1,5,12,34,";
char[] SomeGoodThing=Something.ToCharArray[];

ตอนนี้คุณมีตัวละครแต่ละตัวindexed:

SomeGoodThing[0] -> '1'
SomeGoodThing[1] -> ','

เล่นรอบ ๆ มัน



0
Dim psValue As String = "1,5,12,34,123,12"
psValue = psValue.Substring(0, psValue.LastIndexOf(","))

เอาต์พุต:

1,5,12,34,123

คำถามเกี่ยวกับ C # ไม่ใช่ VB
metabuddy

0

เมื่อคุณมีช่องว่างในตอนท้าย คุณสามารถใช้ beliow

ProcessStr = ProcessStr.Replace(" ", "");
Emails     = ProcessStr.TrimEnd(';');
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.