উদ্দেশ্য-সি: পথের স্ট্রিং থেকে ফাইলের নাম বের করুন


251

আমি যখন NSStringসাথে /Users/user/Projects/thefile.extথাকি তখন আমি thefileউদ্দেশ্য-সি পদ্ধতিতে নিষ্কাশন করতে চাই ।

এটি করার সহজতম উপায় কী?


4
[পাথ লাস্টপ্যাথকোম্পোনেন্ট] বা [[পাথ প্যাথকম্পোন্টস] লাস্টবজেক্ট]]। দু'জনেই 'thefile.ext' দেয়। 'এক্সটেক্স' পাওয়ার জন্য [পাথ পাথ এক্সটেনশন] পদ্ধতি রয়েছে তবে ফাইলের নামের জন্য একই নয়।
আন্তন

উত্তর:


598

এনএসএসটিং রেফারেন্স থেকে নেওয়া , আপনি এটি ব্যবহার করতে পারেন:

NSString *theFileName = [[string lastPathComponent] stringByDeletingPathExtension];

lastPathComponentকল ফিরে আসবে thefile.ext, এবং stringByDeletingPathExtensionশেষ থেকে এক্সটেনশন প্রত্যয় মুছে ফেলা হবে।


9
কখনও শুনিনি lastPathComponent। ধন্যবাদ!
দিমিত্রিস

6
আর একটি সমাধান হ'ল এটি এবং মার্কের উত্তরগুলির সংমিশ্রণ: [[[NSFileManager defaultManager] displayNameAtPath:path] stringByDeletingPathExtension](আপনি যা চান ফাইল ম্যানেজারটি ব্যবহার করুন)। এটি নিশ্চিত করে যে ফাইলের নামটি সঠিকভাবে স্থানীয় করা হয়েছে এবং এক্সটেনশনটি সরানো হয়েছে।
উইলর্ড

1
তোমাকে অনেক ধন্যবাদ! এটি অনেক সাহায্য! আপনি কীভাবে এই এক্সটেনশনটি পাবেন?

20
@TwoDumplingNSString *myExtension = [myString pathExtension]
chown

আরে, এই আলোচনার পরে এটি বেশ খানিকটা পরে তবে আমি কিছু ভাবছি wond কীভাবে আমি এই ক্রিয়াটি উল্টে দেব? আমি শেষ পর্যন্ত আমার প্রোগ্রামে এমন কিছু কোড যুক্ত করব যেখানে আমি একটি ফাইল টেনে আনতে এবং ফেলে দিতে পারি I আমি কীভাবে প্যাথ নিজে থেকে পাব, যাতে আমার কম্পিউটারটি জানতে পারে যে কোন ফাইলটি অ্যাক্সেস করতে হবে? আমি কীভাবে প্রবেশ করা ফাইলটি নিয়ে ফাইলটির পথ পাব?
খ্রিস্টান ক্রাইটার

37

আপনি যদি কোনও ব্যবহারকারী-পঠনযোগ্য ফাইলের নাম প্রদর্শন করছেন তবে আপনি ব্যবহার করতে চান নাlastPathComponent । পরিবর্তে, এনএসফিলম্যানেজারের displayNameAtPath:পদ্ধতিতে পুরো পথটি পাস করুন । এটি মূলত একই জিনিসটি করে, কেবল এটি ফাইলের নামটি সঠিকভাবে স্থানীয় করে এবং ব্যবহারকারীর পছন্দের উপর ভিত্তি করে এক্সটেনশনটি সরিয়ে দেয়।


1
বান্ডিলগুলির জন্য, আপনি এর পরিবর্তে [[[[এনএসবান্ডেল বান্ডেল উইথপথ: প্রিফ] স্থানীয়ীকৃত ইনফো ডিগ্রিরিয়]] অবজেক্টকে: ব্যবহার করতে পারেন: @ "সিএফবান্ডেলনাম"]। displayNameAtPath এর এক্সটেনশন অন্তর্ভুক্ত রয়েছে যেখানে এই কোডটি স্থানীয় নামটি দেয়।
পিটার এন লুইস

1
প্রথমে সিএফবান্ডেলডিসপ্লে নামটি পরীক্ষা করতে ভুলবেন না।
পিটার হোসি

3

বছরের পর বছর দেরি করা এবং বিষয় ছাড়ার ঝুঁকিতে - এবং @ মার্কের দুর্দান্ত অন্তর্দৃষ্টি সত্ত্বেও, সুইফ্টে এটি দেখতে মনে হচ্ছে:

let basename = NSURL(string: "path/to/file.ext")?.URLByDeletingPathExtension?.lastPathComponent
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.