ফাইল পাথ স্ট্রিংগুলি একত্রিত করার কোনও প্রচলিত উপায় আছে?


34

একটি উদাহরণে:

var assets = "images/"

var sounds = assets+"sounds/"

ফাইল পথের পিছনে স্ল্যাশ লাগানো কি আরও প্রচলিত?

var assets = "/images"

var sounds = assets+"/sounds"

আরও একটি পদ্ধতি আছে যা একটি ভাল প্রচলিত অনুশীলন?


জাভাতে স্ট্যাটিক স্ট্রিংস ফাইল.সেস্পেটর এবং ফাইল.প্যাথসেপারেটর রয়েছে যা প্রাসঙ্গিক বলে মনে হয়। এইভাবে আপনি সমস্ত প্ল্যাটফর্ম জুড়ে নিরাপদ
এভোরলর

1
@ এভেরলর আপনার খুব কমই ব্যবহার করা দরকার File.separatorযদিও, Fileএবং Pathএপিআইগুলি উভয় /এবং `\` গ্রহণ করে `
কেপেক্স

2
দয়া করে আপনি কোন ভাষাটি ব্যবহার করছেন তা বোঝাতে পারেন? এটি সম্ভবত সম্পর্কিত ট্যাগ যুক্ত মূল্যবান।
ক্রিস্টোফার ক্রিউটজিগ

@ ক্রিস্টোফার ক্রিউটজিগ আমি জাভা ব্যবহার করছি - যদিও আমি জিজ্ঞাসা করছিলাম স্ট্রিংগুলিতে ফাইল ডিরেক্টরি সংমিশ্রনের জন্য কোনও সাধারণ ব্যবহৃত কনভেনশন রয়েছে কি না। স্পষ্টতই কয়েকটি সাধারণভাবে গৃহীত নিয়ম রয়েছে এবং কিছু সাধারণ জ্ঞান জড়িত তবে ভাষা থেকে ভাষাতে এটি কিছুটা পরিবর্তিত হয়।
iiridescent

1
এটি মূল্যবান, ইউনিক্স জগতে (এবং ইউআরএল), এক পথের মাঝখানে একাধিক ফরোয়ার্ড স্ল্যাশ একই ব্যক্তির সাথে একইরকম আচরণ করা হয়, তাই আপনি যদি আরও বেশি টুকরো টুকরো টুকরো করে ভুল করেন তবে কিছুই খারাপ হবে না nothing এটি একক ইউনিক্সের নির্দিষ্টকরণের অংশ; এই উত্তরটি দেখুন - unix.stackexchange.com/a/1919/21161
yoniLavi

উত্তর:


37

প্রায় প্রতিটি বড় প্রোগ্রামিং ভাষার আপনার জন্য ডিরেক্টরি বিভাজক পরিচালনা করতে একটি গ্রন্থাগার রয়েছে has আপনি তাদের লাভ করা উচিত। এটি আপনার কোড সহজতর করবে এবং বাগগুলি প্রতিরোধ করবে ।

আমার অভিজ্ঞতায়, এর মতো স্ট্রিংগুলির সংমিশ্রণের স্বাভাবিক কারণ হ'ল তারা বিভিন্ন উত্স থেকে আসে। কখনও কখনও এটি একটি কনফিগারেশন ফাইল থেকে পৃথক টুকরা। কখনও কখনও এটি একটি ফাংশন আর্গুমেন্টের সাথে একটানা সংমিশ্রণ হয়। যে কোনও এবং সমস্ত ক্ষেত্রে, যখন সেগুলি বিভিন্ন উত্স থেকে আসে, আপনি একত্রিত হওয়ার জন্য বিভিন্ন প্রান্তে বিভাজক সম্পর্কিত বিভিন্ন সম্ভাব্য কেস বিবেচনা করতে হবে:

  • উভয় প্রান্তে পৃথককারী থাকতে পারে: "images/"এবং"/sounds"
  • কেবলমাত্র একটি একটি বিভাজক আছে: "images"এবং "/sounds"বা "images/"এবং"sounds"
  • উভয়ই পৃথককারী: "images"এবং"sounds"

প্রতিটি অংশই আলাদা উত্স থেকে এসেছে তার অর্থ প্রতিটি উত্সের কী কনভেনশন অনুসরণ করা উচিত সে সম্পর্কে নিজস্ব ধারণা থাকতে পারে, যদি কেউ এটিকে কিছু চিন্তা করে থাকে! আপনার কোড যা কিছু কল করছে তা এ সম্পর্কে চিন্তা করার দরকার নেই । আপনার কোডটি সমস্ত ক্ষেত্রে পরিচালনা করতে হবে কারণ কেউ আপনার কনভেনশন লঙ্ঘন করবে । এর ফলে ত্রুটির কারণ অনুসন্ধান এবং একটি স্থির করার সময় নষ্ট সময় হবে। আমার বেশ কয়েকটি অপ্রীতিকর ঘটনা ঘটেছিল যেখানে কোনও সহকর্মী একটি কনফিগারেশন ফাইলে কীভাবে পাথগুলি ফর্ম্যাট করা উচিত সে সম্পর্কে ধারণা তৈরি করেছিলেন, যার অর্থ আমাকে কোডটি সন্ধান করতে হবে এবং তারা কী প্রত্যাশা করছে তা নির্ধারণ করতে হবে (বা কোড ঠিক করতে হবে)।

বেশিরভাগ প্রধান ভাষা আপনার জন্য এটি করার একটি পদ্ধতি সরবরাহ করে যা ইতিমধ্যে অনেকগুলি কেস পরিচালনা করে:

এগুলির সাথে একটি সতর্কতা রয়েছে। এর মধ্যে বেশিরভাগই ধরে নিচ্ছে যে দ্বিতীয় যুক্তিতে একটি শীর্ষস্থানীয় ডিরেক্টরি বিভাজক একটি মূল পাথকে বোঝায় এবং এর অর্থ প্রথম যুক্তিটি পুরোপুরি বাদ দেওয়া উচিত be কেন এটি দরকারী হিসাবে বিবেচিত হয় আমি জানি না; আমার জন্য, এটি কেবল সমস্যা তৈরি করে। আমি কখনই দুটি পথের অংশ একত্রিত করতে চাইনি এবং প্রথম অংশটি বাদ দিয়ে শেষ করতে চাইনি। বিশেষ কেসগুলির জন্য ডকুমেন্টেশনটি যত্ন সহকারে পড়ুন এবং প্রয়োজনে একটি মোড়ক লিখুন যা তাদের বিশেষ পরিচালনা করার পরিবর্তে আপনি যা চান তা করে।

এটি বিভিন্ন অপারেটিং সিস্টেম সমর্থন করার জন্য আপনার যদি প্রয়োজন হয় তবে এটি অতিরিক্তভাবে সহায়তা করে। এই ক্লাসগুলি প্রায় সর্বব্যাপী সঠিক বিভাজক চয়ন করার জন্য অ্যাকাউন্ট করে। ওএস কনভেনশনগুলির সাথে ফিট করার জন্য লাইব্রেরিতে সাধারণত পাথকে স্বাভাবিক করার একটি উপায় থাকে have

আপনার প্রোগ্রামিং ভাষার কোনও সহজেই উপলভ্য গ্রন্থাগার না থাকার ইভেন্টে আপনার এমন একটি পদ্ধতি লেখা উচিত যা এই সমস্ত কেস পরিচালনা করে এবং এটি উদার এবং প্রকল্পের সর্বত্র ব্যবহার করে।

এটি "অনুমান করবেন না" এবং "আপনাকে সহায়তা করে এমন সরঞ্জামগুলি ব্যবহার করুন" বিভাগে আসে।


2
.NET এর পাথ.কোমাইনটি ভাঙ্গা হয়নি। একে একে আলাদা করে খাওয়াবেন না। নিশ্চিত হয়ে নিন যে আপনি ডকুমেন্টেশনটি পড়েছেন, যদি দ্বিতীয় তর্কটি যদি একটি মূল পথ হয় তবে এর একটি সংজ্ঞায়িত ফলাফল রয়েছে। আপনি এটি পছন্দ করতে পারেন না তবে এর অর্থ এটি ভেঙে গেছে।
এর্নো

4
আপনি ডকুমেন্টেশনটি খুব চালাক হওয়ার চেষ্টা করছেন না তা নিশ্চিত করার জন্য এটি পড়েছেন তা নিশ্চিত করুন। আমি একবার একটি লাইব্রেরি ব্যবহার করেছি যা সফলভাবে উত্পাদন করতে একটি * নিক্স সিস্টেমের C:\Documents and Settings\Adminসাথে একত্রিত my folder:document.txtকরতে পারে /home/admin/my folder/document.txt- একটি দুর্দান্ত কৌশল, তবে বাস্তব বিশ্বে জড়িত হিউরিস্টিকস তারা ঠিক করার চেয়ে আরও বেশি বাগ প্রবর্তন করেছিল।
চিহ্নিত করুন

1
এছাড়াও, জাভা জন্য, Paths.get()একটি একক Stringএকটি Pathবস্তু রূপান্তর । পাথগুলিতে যোগ দিতে, আপনি ব্যবহার করবেন Path.resolve(), যা অন্য কোনও Pathবা এগুলি নিতে পারে StringPathশ্রেণিতে অন্যান্য পদ্ধতি রয়েছে যা আরও বিভিন্ন উপায়ে পথে যোগদানের অনুমতি দেয়।
কাট

1
আমার খারাপ, দেখে মনে হচ্ছে আমি Pathsখুব ভালভাবে ডকগুলি পড়িনি ।
কেট

1
পাওয়ারশেলে, .NET পদ্ধতির বিকল্প [System.IO.Path]::Combine("abc", "\def")যা বর্ণিত আচরণ করে, সেটি সেমিডলেট Join-Path "abc" "\def"যা দেয় "abc\def"
জেপ্প স্টিগ নীলসন

38

জাভাতে, উত্তরটি হবে "উপরের কোনওটিই নয়"। java.io.Fileক্লাসটি ব্যবহার করে পাঠ্য নামগুলি একত্র করা ভাল অনুশীলন হবে ; যেমন

File assets = new File("images");
File sounds = new File(assets, "sounds");

Fileবর্গ এছাড়াও প্ল্যাটফর্ম-নির্দিষ্ট পথনাম বিভাজক যত্ন নেয়।

আপনার পথের নামটি স্ল্যাশ দিয়ে শুরু হওয়া উচিত কিনা তা নিয়ে একটি পৃথক সমস্যা রয়েছে। তবে সর্বোত্তম অনুশীলনের চেয়ে নির্ভুলতার সাথে এটি করা আরও বেশি। স্ল্যাশ দিয়ে শুরু হওয়া কোনও পাথের নাম অর্থহীন কোনও পথের নামের চেয়ে আলাদা কিছু !!


কোর (ইসিএমএ) জাভাস্ক্রিপ্ট লাইব্রেরিতে পাথনাম হ্যান্ডলিংয়ের জন্য সুস্পষ্ট সমর্থন নেই, তবে (কমপক্ষে) নোড.জেএস পাথ মডিউলটির মাধ্যমে সহায়তা সরবরাহ করে।


4
নেট ফ্রেমওয়ার্ক ভাষাগুলি এবং ফাইল সিস্টেম ক্লাস সরবরাহকারী অন্য যে কোনও ক্ষেত্রে এরকমই কিছু ঘটনা ঘটে।
জেমস স্টেল

3
ধন্যবাদ! ভাষা সুনির্দিষ্ট সত্ত্বেও এটি সর্বাধিক সহায়ক উত্তরের মতো বলে মনে হয়েছিল, সাধারণভাবে অন্যান্য ভাষার জন্য গ্রন্থাগারগুলির উপস্থিতি থাকা উচিত, যেমন নেট এবং সি ++;
আইরিডসেন্ট

3
সত্যই, যে কোনও কোড যা একটি লাইব্রেরি ব্যবহার করে না সেগুলি কোড পর্যালোচনায় প্রত্যাখ্যান করা উচিত। বিরল সম্ভাবনায় কোনও লাইব্রেরি বিদ্যমান নেই, উত্তরটি হবে কাঁচা স্ট্রিংগুলি আটকে দেওয়ার চেয়ে নিজের লেখা।
রোবট


পাইথন আছে os.path.join। পাওয়ারশেল আছে join-path। আমি এই উত্তরে কিছু যুক্ত করব। আমি খুঁজে পেয়েছি যে যদি আপনার একাধিক টুকরোতে ফাইলের পথের প্রয়োজন হয় তবে আপনি যদি নির্দিষ্ট জায়গায় ফাইলের পাথ রয়েছে এমন কোনওটির সম্পর্কে অনুমান করেন তবে এটি আপনার কোডটিকে খুব ভঙ্গুর করে তোলে । এই শ্রেণীর ব্যবহারগুলি কেবল পোর্টেবিলিটিতে সহায়তা করে না, তবে এটি সমস্ত সম্ভাব্য প্রান্তের কেসগুলি পরিচালনা করে (উভয় প্রান্তে স্ল্যাশ যোগদানের জন্য, কেবল একদিকে স্ল্যাশ, একেবারে কোনও স্ল্যাশ নেই)। আপনি যখন কোনও কনফিগারেশন ফাইলে ফাইলের পথ ফেলে দিচ্ছেন তখন এই নমনীয়তাটি অমূল্য
jpmc26

21

নোট করুন। নেট এ আপনার পথ.কোমাইন পদ্ধতি ব্যবহার করা উচিত।

var path = System.IO.Path.Combine("assets", "sounds");

এর কারণ হ'ল এটি ফোল্ডারের নামগুলি নির্মাণের সময় সঠিক অক্ষরগুলি 'জানে' ।

এটি প্রাক বা পোস্ট ফিক্সিংয়ের 'সমস্যা' কেড়ে নেয়।


4
os.path.join মূলত অজগরটির জন্যও একই কাজ করে
স্টারওয়েভার

লক্ষ্য করুন path.combine সম্পর্কে SEPERATOR উদ্বেজক ব্যবসা গুটিয়ে আপনি পেতে না: stackoverflow.com/questions/53102/...
jmoreno

1
@ জোমোরনো - আমার উদাহরণে কোনও বিভাজনকারী নেই। আপনি যে প্রশ্নের সাথে সংযুক্ত হয়েছেন তাতে হার্ড কোডিং বিভাজক রয়েছে এবং যদি মৌলিকভাবে ভুল হয় কারণ দ্বিতীয় পথটি একটি পরম পথ।
এর্নো

যদিও এই বিষয়ে সাবধানতা অবলম্বন করুন। আমি .NET সম্পর্কে নিশ্চিত নই, কিন্তু os.path.join('src', '../../../your_secret_stuff') হয় পাইথন বৈধ; অন্য কথায়, ব্যবহারকারীর ইনপুটটিতে অন্ধভাবে এই পদ্ধতিগুলি ব্যবহার করবেন না।
সাপি

@ সাপি - অবশ্যই, ব্যবহারকারীর ইনপুটটি সর্বদা স্যানিটাইজ করা উচিত তবে এটি এপিআইয়ের নয়, প্রোগ্রামারের দায়িত্ব।
এর্নো

5

পাথ তৈরি করার সময় আমি প্রায়শই এমন একটি ফাংশন ব্যবহার করি যা ইতিমধ্যে সেখানে না থাকলে পিছনে স্ল্যাশ যুক্ত করে। তাহলে পাথগুলি এর মতো তৈরি করা যায়:

filename := fs( 'assets') + fs( 'images') + fs( 'icons') + 'some.png';

যেখানে fs () এর প্রয়োজন হলে একটি পিছনে স্ল্যাশ যুক্ত করে।


5

ফোল্ডার এবং ফাইলগুলি কেবল একটি দিকেই পৃথক: ফোল্ডারগুলি স্ল্যাশের সাথে শেষ হয় যেখানে ফাইলগুলি নেই। তদতিরিক্ত, নিখুঁত পাথগুলি এমন /যেখানে শুরু হয় যেখানে আপেক্ষিক পাথগুলি হয় না। আপনি যদি এই ধারাবাহিকভাবে সম্মিলিত পথ এবং ফাইলগুলি একসাথে ব্যবহার করেন তবে কোনও সমস্যা হওয়া উচিত নয়।

var absolutepath = "/my/path/";
var relativepath = "css/";
var filename = "test.css";
var relativepathtofilename = "js/test.js";

var a = absolutepath + relativepath + filename; //Output: /my/path/css/test.css
var b = absolutepath + relativepathtofilename;  //Output: /my/path/js/test.js

দুটি পরম পথ একসাথে লড়াই করা কোনও অর্থবোধ করে না, যেহেতু দ্বিতীয় পাথটি প্রথম পথের সাথে তুলনামূলকভাবে হওয়া উচিত। দুটি আপেক্ষিক পথ একসাথে লড়াই করা কোনও সমস্যা নয়, তবে প্রোগ্রামটি আপেক্ষিক পথটি কোথায় সম্পর্কিত তা যদি না জেনে থাকে তবে অপরিজ্ঞাত আচরণের দিকে পরিচালিত করতে পারে।


এটি সম্ভবত আমার মূল প্রশ্নের সর্বোত্তম উত্তর দিয়েছে, আমি মনে করি আমি ফাইলের পথগুলি আরও ভালভাবে বুঝতে পেরেছি, যদিও স্টিফেন সি এবং এরনোর মতো বলেছিলেন, ভাষার পাঠাগারগুলি একটি সেরা প্রথম বাজি। এটি যদিও কনভেনশন আরও ভাল ব্যাখ্যা করে। ধন্যবাদ!
iiridescent

ফাইল সিস্টেমের পথ বা ইউআরএল?
মিঃ হোয়াইট

1
সমস্ত উদ্দেশ্য এবং উদ্দেশ্যগুলির জন্য, আপনি এটি ইউরির উপরও প্রয়োগ করতে পারেন। একটি পরম ইউরি একটি প্রোটোকল দিয়ে শুরু হবে, তবে এটির পাশাপাশি এটি আমার মনে হবে।
সুমুরাই 8

আপনার আউটপুট কীভাবে কাজ করছে তা নিশ্চিত নয়। যখন আমি এটি করি আমি:var a = "/my/path" + "css/" + "test.css"; //Output: "/my/pathcss/test.css"
দামন

1
@ দামন আমি একটি সম্পাদনা করেছি। absolutepathএকটি স্ল্যাশ দিয়ে শেষ করা উচিত ছিল, কারণ এটি একটি পথ। আমি যখন এটি লিখেছিলাম কোনওভাবেই আমি তা উপেক্ষা করেছি।
সুমুরাই 8

4

আমি মনে করি যে পাথগুলি কীভাবে বাস্তবায়ন করা যায় সে সম্পর্কে কোনও জাদু বা "প্রচলিত অনুশীলন" নেই, তবে অবশ্যই স্ট্রিং কনটেনটেশন কোনও উপায় নয়। কেসগুলি মোকাবেলার জন্য আপনি নিজের নিজস্ব এপিআই বিকাশ করতে পারেন তবে এটির জন্য কিছু প্রচেষ্টা প্রয়োজন হতে পারে। বিশেষত, আপনার বিভিন্ন প্ল্যাটফর্ম সম্পর্কে সতর্ক হওয়া উচিত। উদাহরণস্বরূপ, উইন্ডোজে \বিভাজক এবং ইউনিক্স-ভিত্তিক সিস্টেমগুলি /পৃথককারী tor

আমি জাভাস্ক্রিপ্ট গ্রন্থাগারগুলির সাথে পরিচিত নই, তবে আমি নিশ্চিত যে এই কেসগুলি পরিচালনা করার জন্য গ্রন্থাগার থাকা উচিত। জাভাতে, উদাহরণস্বরূপ, আপনি প্ল্যাটফর্মের স্বাধীন পাথ ক্রিয়াকলাপ মোকাবেলায় পাথ API ব্যবহার করতে পারেন ।


3
উইন্ডোজ আসলে /পাথ ফাইলের নাম সীমানা হিসাবে সমর্থন করে । কমান্ড লাইনে এর জন্য কিরক প্রয়োজন, তবে ফাইল I / O API গুলি ফরোয়ার্ড স্ল্যাশ সহ সুন্দরভাবে কাজ করে।
রুসলান

en.wikedia.org/wiki/… "উইন্ডোজ সিস্টেম এপিআই স্ল্যাশ গ্রহণ করে, এবং সুতরাং উপরের সমস্ত ইউনিক্স উদাহরণ ব্যবহার করা উচিত work ব্যাকস্ল্যাশ প্রবেশ করতে - উল্লেখযোগ্যভাবে cmd.exe শেল (প্রায়শই এটি "টার্মিনাল" বলা হয় কারণ এটি সাধারণত টার্মিনাল উইন্ডোতে চালিত হয়) "
হাঁসকে

0

আমার ব্যক্তিগত পছন্দটি হ'ল:

var assets = "/images"

var sounds = assets+"/sounds"

আমি সর্বদা নিখুঁত পাথ ( /images/...) ব্যবহার করি , এটি আমার কাছে ত্রুটির পক্ষে কম বলে মনে হয়। এটি ব্যবহার করা আরও বোকা প্রমাণ var sounds = assets+"/sounds"কারণ এমনকি যদি assetsএকটি পিছনে স্ল্যাশ পড়েও থাকে এবং আপনি শেষ পর্যন্ত হয়ে থাকেন /images//soundsতবে এটি সমাধান হবে /images/sounds। একটি অস্বীকৃতি হ'ল এটি আপনার অনুরোধ হ্যান্ডলারের উপর নির্ভর করে। অ্যাপাচি এটি ঠিকঠাকভাবে পরিচালনা করছে বলে মনে হচ্ছে (কমপক্ষে কয়েকটি সংস্করণ / কনফিগারেশন, দেখুন http://www.amazon.com//gp//site-directory//ref=nav_sad )। অন্য যেভাবে আপনি শেষ করতে চান /imagessounds, এত বোকা প্রমাণ নয় :) ডাবল স্ল্যাশগুলি পরীক্ষা করার জন্য এবং সেগুলি পরিষ্কার করার বিকল্পও রয়েছে। অন্যান্য পদ্ধতির সাথে কোনও বিকল্প নয়।


11
আমি জানি এমন সমস্ত প্রসঙ্গে, একটি স্ল্যাশ ( /) দিয়ে শুরু হওয়া পথটি একটি পরম পথ, আপেক্ষিক পথ নয়। অথবা আপনি এটির অর্থ কেবল প্রথমটি ব্যতীত অন্য কোনও পথ-বিভাগের জন্য করেছেন?
বার্ট ভ্যান ইনজেন শেহানাউ

@ বার্টওয়ানইঞ্জেনচেনা আমি আপনার সাথে পুরোপুরি একমত এবং আমি বছরের পর বছর ধরে এগুলিকে ডাকছি, তবে প্রতিবারই যখন আমি সামনের দিকের বিকাশকারী দ্বারা লেখা একটি নিবন্ধ পড়ি তারা তাদের আপেক্ষিক পথ হিসাবে উল্লেখ করে। আমি অনুমান করাতে চাইনি তাই আমি অনুমান করি যে আমি দু'টি মন্দকে কম বেছে নিয়েছি ...? এখন যেহেতু আমি জানি আমার পক্ষ থেকে কিছু লোক রয়েছে আমি আমার উত্তরটি আপডেট করব :)
rpaskett

2
ওয়েব বিকাশকারীদের জন্য /somewhereএটি একটি আপেক্ষিক পথ কারণ এটি হোস্টকে অন্তর্ভুক্ত করে না তাই ব্রাউজারটি এটি বর্তমান পৃষ্ঠার হোস্টের উপর ভিত্তি করে দেখাবে ... ওয়েব ওয়ার্ল্ডে http://here/somewhereএটি একটি পরম ইউআরআই এবং এটির সাথে সম্পর্কিত /somewhereelse। ফাইল-সিস্টেমের বিশ্বে, /somewhereনিখুঁত, মূল থেকে আগত /এবং "কোথাও কিছু" বর্তমান কার্যনির্বাহী ডিরেক্টরি সম্পর্কিত।
রব

3
@ রবি, রোপসকেট: আরএফসি 3986 (আরএফসি যা ইউআরআই সংজ্ঞায়িত করে) দ্বারা যাওয়া , http://here/somewhereএকটি পরম পথ সহ একটি ইউআরআই, একটি পরম পাথের /somewhereসাথে somewhere/elseএকটি আপেক্ষিক রেফারেন্স এবং আপেক্ষিক পথের সাথে আপেক্ষিক রেফারেন্স। স্পষ্টতই, এই চেনাশোনাগুলিতে আপেক্ষিক রেফারেন্স উল্লেখ করতে "আপেক্ষিক পথ" ব্যবহার করা হয়।
বার্ট ভ্যান ইনজেন শেহানাউ

1
@ বার্টওয়ানআইজেনচেনা: উইন্ডোজে স্ল্যাশ দিয়ে শুরু হওয়া পথটি একটি আপেক্ষিক পথ এবং সিডাব্লুডির সাথে সম্পর্কিত। en.wikipedia.org/wiki/...
হাঁসের গরুর

0

স্মলটাল্কে স্ট্রিংয়ে / পদ্ধতিটি সংজ্ঞায়িত করা সোজা হয় যাতে এটি এর মতো কাজ করে:

'assets' / 'sounds' => 'assets/sounds'.
'assets/' / 'sounds' => 'assets/sounds'.
'assets' / '/sounds' => 'assets/sounds'.
'assets/' / '/sounds' => 'assets/sounds'.

পদ্ধতিটির একটি সহজ বাস্তবায়ন এখানে দেওয়া হয়েছে (আপনি এটি আরও ভাল করতে পারেন):

/ aString
    | slash first second |
    slash := Directory separator.
    first := self.
    (first endsWith: slash) ifTrue: [first := first allButLast].
    second := aString.
    (second beginsWith: slash) ifTrue: [second := second allButFirst].
    ^first , slash , second

নোট : আপনি যেমন সীমান্ত ক্ষেত্রে ভাল মনোযোগ দিতে চাইতে পারেন '' / '', 'x/' / ''অর্ডার সঠিক আচরণ নির্ধারণ করার জন্য, ইত্যাদি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.