Câu trả lời:
Bạn có thể sử dụng -hasPrefix:
phương pháp NSString
:
Mục tiêu-C:
NSString* output = nil;
if([string hasPrefix:@"*"]) {
output = [string substringFromIndex:1];
}
Nhanh:
var output:String?
if string.hasPrefix("*") {
output = string.substringFromIndex(string.startIndex.advancedBy(1))
}
Bạn có thể dùng:
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
hasPrefix hoạt động đặc biệt tốt. ví dụ: nếu bạn đang tìm kiếm một url http trong một NSString
, bạn sẽ sử dụng componentsSeparatedByString
để tạo NSArray
và lặp lại mảng bằng cách sử dụng hasPrefix
để tìm các phần tử bắt đầu bằng http.
NSArray *allStringsArray =
[myStringThatHasHttpUrls componentsSeparatedByString:@" "]
for (id myArrayElement in allStringsArray) {
NSString *theString = [myArrayElement description];
if ([theString hasPrefix:@"http"]) {
NSLog(@"The URL is %@", [myArrayElement description]);
}
}
hasPrefix
trả về giá trị Boolean cho biết liệu một chuỗi đã cho có khớp với các ký tự đầu của người nhận hay không.
- (BOOL)hasPrefix:(NSString *)aString,
tham số aString
là một chuỗi mà bạn đang tìm Giá trị trả về là CÓ nếu aString khớp với các ký tự đầu của người nhận, nếu không thì KHÔNG. Trả về KHÔNG nếu aString
trống.
Sử dụng characterAtIndex:
. Nếu ký tự đầu tiên là dấu hoa thị, hãy sử dụng substringFromIndex:
để lấy chuỗi sans '*'.
Một cách tiếp cận khác để làm điều đó ..
Nó có thể giúp ai đó ...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
Để trả lời tổng quát hơn, hãy thử sử dụng phương thức hasPrefix. Ví dụ, mã bên dưới kiểm tra xem một chuỗi bắt đầu bằng 10, đây là mã lỗi được sử dụng để xác định một vấn đề nhất định.
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
Điều này có thể giúp? :)
Chỉ cần tìm kiếm ký tự ở chỉ số 0 và so sánh nó với giá trị bạn đang tìm kiếm!
Một chút mã đẹp này tôi tình cờ tìm thấy và tôi vẫn chưa thấy nó được đề xuất trên Stack. Nó chỉ hoạt động nếu các ký tự bạn muốn loại bỏ hoặc thay đổi tồn tại, thuận tiện trong nhiều tình huống. Nếu ký tự không tồn tại, nó sẽ không thay đổi NSString của bạn:
NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];
Đây là cách tôi sử dụng nó:
//declare what to look for
NSString * suffixTorRemove = @"</p>";
NSString * prefixToRemove = @"<p>";
NSString * randomCharacter = @"</strong>";
NSString * moreRandom = @"<strong>";
NSString * makeAndSign = @"&amp;";
//I AM INSERTING A VALUE FROM A DATABASE AND HAVE ASSIGNED IT TO returnStr
returnStr = [returnStr stringByReplacingOccurrencesOfString:suffixTorRemove withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:prefixToRemove withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:randomCharacter withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:moreRandom withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:makeAndSign withString:@"&"];
//check the output
NSLog(@"returnStr IS NOW: %@", returnStr);
Dòng này cực dễ để thực hiện ba hành động trong một:
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
hasPrefix:@"word"
bạn kiểm tra nhiều giá trị được lưu trữ trong mộtNSArray
? Ví dụ :NSArray *words = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
?