คุณจะตรวจสอบว่า NSString เริ่มต้นด้วยอักขระบางตัวได้อย่างไร (ตัวอักษร *)
The * เป็นตัวบ่งชี้สำหรับชนิดของเซลล์ดังนั้นฉันต้องการเนื้อหาของ NSString นี้โดยไม่มี * แต่ต้องรู้ว่ามี * อยู่หรือไม่
คุณจะตรวจสอบว่า NSString เริ่มต้นด้วยอักขระบางตัวได้อย่างไร (ตัวอักษร *)
The * เป็นตัวบ่งชี้สำหรับชนิดของเซลล์ดังนั้นฉันต้องการเนื้อหาของ NSString นี้โดยไม่มี * แต่ต้องรู้ว่ามี * อยู่หรือไม่
คำตอบ:
คุณสามารถใช้-hasPrefix:
วิธีการNSString
:
Objective-C:
NSString* output = nil;
if([string hasPrefix:@"*"]) {
output = [string substringFromIndex:1];
}
สวิฟท์:
var output:String?
if string.hasPrefix("*") {
output = string.substringFromIndex(string.startIndex.advancedBy(1))
}
คุณสามารถใช้ได้:
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
hasPrefixทำงานได้ดีเป็นพิเศษ ตัวอย่างเช่นหากคุณกำลังมองหา http URL ใน a NSString
คุณจะต้องใช้componentsSeparatedByString
ในการสร้างNSArray
และย้ำอาร์เรย์ที่ใช้hasPrefix
ในการค้นหาองค์ประกอบที่เริ่มต้นด้วย 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
ส่งคืนค่าบูลีนที่ระบุว่าสตริงที่กำหนดตรงกับอักขระเริ่มต้นของผู้รับ
- (BOOL)hasPrefix:(NSString *)aString,
พารามิเตอร์aString
เป็นสตริงที่คุณกำลังมองหาค่าตอบแทนเป็นใช่ถ้า aString ตรงกับตัวอักษรเริ่มต้นของผู้รับมิฉะนั้น NO ส่งคืนไม่ใช่ถ้าaString
ว่างเปล่า
characterAtIndex:
ใช้ หากอักขระตัวแรกเป็นเครื่องหมายดอกจันใช้substringFromIndex:
เพื่อรับสตริง sans '*'
NSString *stringWithoutAsterisk(NSString *string) {
NSRange asterisk = [string rangeOfString:@"*"];
return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}
อีกวิธีในการทำ ..
ขอให้ช่วยใครสักคน ...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
เป็นคำตอบทั่วไปเพิ่มเติมลองใช้วิธี hasPrefix ตัวอย่างเช่นรหัสด้านล่างตรวจสอบเพื่อดูว่าสตริงเริ่มต้นด้วย 10 ซึ่งเป็นรหัสข้อผิดพลาดที่ใช้ในการระบุปัญหาบางอย่าง
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
สิ่งนี้อาจช่วยได้อย่างไร :)
เพียงค้นหาตัวละครที่ดัชนี 0 และเปรียบเทียบกับค่าที่คุณกำลังมองหา!
รหัสเล็กน้อยดีนี้ฉันพบโดยบังเอิญและฉันยังไม่เห็นมันแนะนำใน Stack ใช้งานได้เฉพาะเมื่อมีอักขระที่คุณต้องการลบหรือแก้ไขซึ่งมีความสะดวกในหลาย ๆ สถานการณ์ หากตัวละคร / s ไม่มีอยู่มันจะไม่เปลี่ยน NSString ของคุณ:
NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];
นี่คือวิธีที่ฉันใช้:
//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);
หนึ่งบรรทัดนี้ง่ายต่อการดำเนินการสามอย่างในหนึ่งเดียว:
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
hasPrefix:@"word"
คุณตรวจสอบหลายค่าที่เก็บไว้ในNSArray
? ตัวอย่างเช่น:NSArray *words = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
?