স্ট্রিং.টোলওয়ার () এবং স্ট্রিং.টোলওয়ারআইভেরিয়েন্ট ()


163

পার্থক্য কী এবং কখন কী ব্যবহার করব? আমি সবসময় ব্যবহার করলে ঝুঁকি কী ToLower()এবং আমি সর্বদা ব্যবহার করলে ঝুঁকি কী ToLowerInvariant()?


4
আপনার পরিবর্তে বড় হাতের স্ট্রিংগুলিকে স্বাভাবিক করা উচিত। দেখুন msdn.microsoft.com/en-us/library/bb386042.aspx
habakuk

উত্তর:


148

বর্তমান সংস্কৃতির উপর নির্ভর করে, টাউলভার একটি সংস্কৃতি নির্দিষ্ট ছোট হাতের অক্ষর তৈরি করতে পারে যা আপনি প্রত্যাশা করছেন না। যেমন ınfoi এর পরিবর্তে বিন্দু ছাড়াই উত্পাদন করা infoএবং এভাবে স্ট্রিং তুলনা করা। যে কারণে, টোলএভারআইভারেন্টটি কোনও ভাষা-নির্দিষ্ট ডেটাতে ব্যবহার করা উচিত। যখন আপনার ব্যবহারকারীর ইনপুট থাকতে পারে যা তাদের মাতৃভাষায় / চরিত্র-সেটে থাকতে পারে, আপনি কেবলমাত্র টোলওয়ার ব্যবহার করার সময় সাধারণত হন।

এই সমস্যাটির উদাহরণের জন্য এই প্রশ্নটি দেখুন: সি # - টোলওয়ার () মাঝে মাঝে "আমি" চিঠিটি থেকে বিন্দুটি সরিয়ে ফেলছে


45

আমি মনে করি এটি কার্যকর হতে পারে:

http://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx

হালনাগাদ

যদি আপনার অ্যাপ্লিকেশনটি কোনও ভবিষ্যদ্বাণীমূলক পদ্ধতিতে স্ট্রিং পরিবর্তনের ক্ষেত্রে নির্ভর করে যা বর্তমান সংস্কৃতি দ্বারা প্রভাবিত হয় না, তোলওয়ারআইভারেন্ট পদ্ধতিটি ব্যবহার করুন। ToLowerInvariant পদ্ধতিটি ToLower (সংস্কৃতিInfo.InvariantCल्ভ) এর সমতুল্য। পদ্ধতিটি সুপারিশ করা হয় যখন ব্যবহারকারীর ইন্টারফেস নিয়ন্ত্রণে স্ট্রিংয়ের সংগ্রহ অবশ্যই অনুমানযোগ্য ক্রমে উপস্থিত হয়।

এছাড়াও

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

http://www.dotnetperls.com/tolowerinvariant-toupperinvariant

HTH


@ ড্যানিওলজিএক্স দয়া করে আপনি আরও বিস্তারিত বলতে পারেন? এমএসডিএন এর লিঙ্ক থেকে তার ব্যবহারযোগ্যতা অনুমান করা যায় না। ধন্যবাদ
প্রেরাক কে

2
হ্যাঁ ToLowerInvariant প্রত্যাশার মতো তুর্কি ভাষায় কাজ করছে না। İ হয়ে ওঠে
MonsterMMORPG

28

String.ToLower()String.ToLowerInvariant()আক্রমণকারী সংস্কৃতি ব্যবহার করার সময় ডিফল্ট সংস্কৃতি ব্যবহার করে। সুতরাং আপনি মূলত আক্রমণকারী সংস্কৃতি এবং সাধারণ স্ট্রিং তুলনার মধ্যে পার্থক্য জিজ্ঞাসা করছেন


না সে নেই। "অর্ডিনাল" একটি তৃতীয় বিকল্প - বর্তমান সংস্কৃতিটিকে "উপেক্ষা" করার কিছুটা ভিন্ন উপায়। ToLowerবৈকল্পিকগুলি আলোচনার ক্ষেত্রে পার্থক্যটি প্রাসঙ্গিক নয় ; অর্ডিনাল বনাম আক্রমণকারী কেবল দুটি স্ট্রিংয়ের "সাজানোর ক্রম" পরিবর্তন করে, সমতার তুলনা পরিবর্তন করে না।
টুলমেকারস্টেভ

27

টি এল; ডিআর:

"সামগ্রী" দিয়ে কাজ করার সময় (যেমন নিবন্ধ, পোস্ট, মন্তব্য, নাম, স্থান ইত্যাদি) ব্যবহার করুন ToLower()। "আক্ষরিক" (যেমন কমান্ড লাইন আর্গুমেন্ট, কাস্টম ব্যাকরণ, স্ট্রিংগুলি যা এনামস হওয়া উচিত ইত্যাদি) নিয়ে কাজ করার সময় ব্যবহার করুন ToLowerInvariant()

উদাহরণ:

= ভুলভাবে ব্যবহার ToLowerInvariantকরা =

তুর্কি ভাষায়, এর DIŞঅর্থ "বাইরের" এবং এর dişঅর্থ "দাঁত"। যথাযথ নিম্ন কেসিং DIŞহয় dış। সুতরাং, আপনি যদি ToLowerInvariantভুলভাবে ব্যবহার করেন তবে আপনার তুরস্কে টাইপস থাকতে পারে।

= ভুলভাবে ব্যবহার ToLowerকরা =

এখন ভান করুন আপনি একটি এসকিউএল পার্সার লিখছেন। কোথাও আপনার এমন কোড থাকবে যা দেখতে দেখতে:

if(operator.ToLower() == "like")
{
  // Handle an SQL LIKE operator
}

আপনি সংস্কৃতি পরিবর্তন করলে এসকিউএল ব্যাকরণ পরিবর্তন হয় না। এর SÉLECTIONNEZ x DE booksপরিবর্তে একজন ফরাসী লেখেন না SELECT X FROM books। তবে উপরের কোডটি কাজ করার জন্য, একজন তুর্কি ব্যক্তিকে লিখতে হবে SELECT x FROM books WHERE Author LİKE '%Adams%'(মূলধনটির উপরে বিন্দুটি নোট করুন, দেখতে প্রায় অসম্ভব)। এটি আপনার তুর্কি ব্যবহারকারীর জন্য যথেষ্ট হতাশাব্যঞ্জক।

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