ฉันมี NSString ที่มีค่า
http://digg.com/news/business/24hr
ฉันจะรับทุกอย่างก่อนระดับ 3 ได้อย่างไร?
http://digg.com/news/
ฉันมี NSString ที่มีค่า
http://digg.com/news/business/24hr
ฉันจะรับทุกอย่างก่อนระดับ 3 ได้อย่างไร?
http://digg.com/news/
คำตอบ:
นี่ไม่ใช่ระดับที่สามอย่างแน่นอนโปรดทราบ URL ถูกแยกในลักษณะนั้น:
http )://คั่นusername:password@hostname )digg.com ):80หลังชื่อโดเมนเช่น)/news/business/24hr)?foo=bar&baz=frob)#foobar)URL "คุณลักษณะครบถ้วน" จะมีลักษณะดังนี้:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURLมีอุปกรณ์เสริมที่หลากหลาย คุณสามารถตรวจสอบพวกเขาในเอกสารสำหรับNSURLระดับมาตราเข้าถึงส่วนของ URL สำหรับการอ้างอิงอย่างรวดเร็ว:
-[NSURL scheme] = http-[NSURL resourceSpecifier] = (ทุกอย่างตั้งแต่ // ถึงท้าย URL)-[NSURL user] = foobar-[NSURL password] = nicate-[NSURL host] = example.com-[NSURL port] = 8080-[NSURL path] = /some/path/file.html-[NSURL pathComponents] = @ ["/", "some", "path", "file.html"] (โปรดทราบว่าค่าเริ่มต้น / เป็นส่วนหนึ่งของมัน)-[NSURL lastPathComponent] = file.html-[NSURL pathExtension] = html-[NSURL parameterString] = params - ที่นี่-[NSURL query] = foo = bar-[NSURL fragment] = bazสิ่งที่คุณต้องการคืออะไรแบบนั้น:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
สำหรับ URL ตัวอย่างของคุณสิ่งที่คุณต้องการคือโปรโตคอลโฮสต์และองค์ประกอบเส้นทางแรก (องค์ประกอบที่ดัชนี 0 ในอาร์เรย์ส่งคืนโดย-[NSString pathComponents]เป็นเพียง "/" ดังนั้นคุณจะต้องการองค์ประกอบที่ดัชนี 1 เครื่องหมายทับอื่น ๆ จะถูกละทิ้ง)
file.htmlนี้ไม่ได้ระบุไว้ในสัญลักษณ์แสดงหัวข้อย่อย - ฉันเห็นว่าเรากำลังกระโดดจากเส้นทางไปยังสตริงข้อความค้นหา ...
[url.pathComponents objectAtIndex:1]แทนดัชนี0เนื่องจากเครื่องหมายทับเป็นองค์ประกอบของอาร์เรย์ทำให้โค้ดในคำตอบนี้แสดงผลhttp://digg.com//