Xóa ký tự cụ thể cuối cùng trong chuỗi c #


88

Tôi sử dụng WinForms c #. Tôi có giá trị chuỗi như bên dưới,

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

Tôi cần xóa dấu phẩy cuối cùng trong một chuỗi. Vì vậy, làm thế nào tôi có thể xóa nó?


16
Tại sao bạn có một string? Tôi giả sử vì một vòng lặp nối dấu phẩy với ints. Bạn có thể sử dụng string.Join(",", ints)thay thế. Điều đó tránh dấu phẩy ở vị trí đầu tiên.
Tim Schmelter

Câu trả lời:


259

Hãy thử string.TrimEnd():

Something = Something.TrimEnd(',');

5
Đây là giải pháp tốt nhất vì nó hoạt động với tất cả các chuỗi, bao gồm cả các tình huống mà bạn không biết trước được liệu chuỗi có thực sự kết thúc bằng dấu phẩy hay không.
East of Nowhere,

6
Đây là lý do tại sao tôi vẫn tìm kiếm các giải pháp ngay cả với những thứ mà tôi có thể dễ dàng viết ra. Người khác thường đã giải quyết nó. :)
dpberry178

1
Vì vậy, các dấu ngoặc kép không phải là một sai lầm. Hôm nay tôi đã học char và string được định nghĩa với các dấu ngoặc kép tương ứng.
egmfrs

20

Câu trả lời của King King tất nhiên là đúng. Ngoài ra bình luận của Tim Schmelter cũng là gợi ý hay trong trường hợp của bạn.

Nhưng nếu bạn thực sự muốn loại bỏ dấu phẩy cuối cùng trong một chuỗi , bạn nên tìm chỉ mục của dấu phẩy cuối cùng và loại bỏ như;

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

Đầu ra sẽ là;

1,5,12,3412345

Đây a demonstration.

Không chắc bạn muốn theo cách này nhưng tôi muốn chỉ ra. Và hãy nhớ rằng, String.Removephương thức không loại bỏ bất kỳ ký tự nào trong chuỗi gốc, nó trả về chuỗi mới.


5

Thử string.Remove();

string str = "1,5,12,34,";
string removecomma = str.Remove(str.Length-1);
MessageBox.Show(removecomma);

3

Phương thức TrimEnd nhận một mảng ký tự đầu vào chứ không phải một chuỗi. Đoạn mã dưới đây từ Dot Net Perls , cho thấy một ví dụ hiệu quả hơn về cách thực hiện chức năng tương tự như 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

Hoặc bạn có thể chuyển đổi nó thành Char Array trước bằng cách:

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

Bây giờ bạn có mỗi ký tự indexed:

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

Chơi xung quanh nó


1

Hãy thử bên dưới

Cái gì đó..TrimEnd (",". ToCharArray ());


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

đầu ra:

1,5,12,34,123

Câu hỏi là về C # không phải VB.
metabuddy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.