Đây thực sự là một trường hợp đó là hoàn toàn phù hợp cho biểu thức thông thường:
NSString *str = @"00000123";
NSString *cleaned = [str stringByReplacingOccurrencesOfString:@"^0+"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, str.length)];
Chỉ có một dòng mã (theo nghĩa logic, ngắt dòng thêm cho rõ ràng) và không có giới hạn về số ký tự mà nó xử lý.
Một lời giải thích ngắn gọn về các mẫu biểu thức chính quy:
Các ^
có nghĩa là mô hình cần được neo vào đầu của chuỗi. Chúng tôi cần điều đó để đảm bảo nó không khớp với số 0 hợp lệ bên trong dãy số.
Phần 0+
có nghĩa là nó phải khớp với một hoặc nhiều số 0.
Đặt lại với nhau, nó khớp với chuỗi gồm một hoặc nhiều số 0 ở đầu chuỗi, sau đó thay thế bằng chuỗi rỗng - nghĩa là nó xóa số 0 đầu tiên.
Bạn tuyệt vời @adali :)) –
bạn được chào đón :) – adali
Hi @adali, nhưng khi độ dài chuỗi là> 9, nó mang lại một số giá trị khác nhau. Bạn có thể kiểm tra nó.Đối với ví dụ:NSString * str = @ "3103282369"; NSString * clean = [NSString stringWithFormat: @ "% d", [str intValue]]; NSLog (@ "Clean-% @", sạch sẽ); cho đầu ra là 2147483647. –