ฉันมี 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//