সর্বদা চিহ্নটি প্রদর্শন করতে কাস্টম সংখ্যার বিন্যাসের স্ট্রিং


188

সর্বদা সাইন আউটপুট দেওয়ার জন্য আমি কোনও মানক বা কাস্টম সংখ্যাসূচক বিন্যাসের স্ট্রিং নির্দিষ্ট করতে পারি, এটি + ve বা -তাই হোক (যদিও এটি শূন্যের জন্য করা উচিত, আমি নিশ্চিত নই!)

উত্তর:


296

হ্যা, তুমি পারো. শর্তযুক্ত বিন্যাসকরণ রয়েছে is এমএসডিএন-এ শর্তসাপেক্ষ বিন্যাস দেখুন

উদাহরণ:

string MyString = number.ToString("+0;-#");

যেখানে একটি সেমিকোলন দ্বারা বিভক্ত প্রতিটি বিভাগ ইতিবাচক এবং নেতিবাচক সংখ্যাগুলি উপস্থাপন করে

বা:

string MyString = number.ToString("+#;-#;0");

আপনি যদি শূন্যটি চান না তবে একটি চিহ্ন চিহ্ন করুন sign


1
একটি বাগ ঠিক করা হয়েছে যার মাধ্যমে নেতিবাচকগুলি বিয়োগ করবে না।
রোমান স্টারকভ

তোমাকে অনেক ধন্যবাদ! '#' এর সমতুল্য - সি # তে প্রিন্টফের পতাকাটি কী কী তা নির্ধারণ করার জন্য আমি এক ঘন্টার মতো আমার মাথা ঘুরে বেড়াচ্ছি এবং আপনি আমাকে উত্তরটি দিয়েছিলেন।
rbaleksandar

4
সঙ্গে +#;-#, মান 0 জন্য আমি শুধু পেতে "+" কোন প্রকৃত 0. আমাকে সঙ্গে আমি 0, "+0" হিসাবে প্রদর্শিত তাই এই কাজ চাই: +#;-#;+0
ওরিওন এলিজিল

3
ধন্যবাদ! এর সাথে মেশানো ''দুর্দান্ত কাজ করবে! এই দিকে তাকান: Changes.ToString("'('#' ▲)';'('#' ▼)';''")! এটি আমার প্রচুর সময় এবং কয়েকশ ifবিবৃতি বাঁচায়! :)
শাহাব

1
@orionelenzil আমারও একই সমস্যা ছিল। এর +0;-#পরিবর্তে আপনিও করতে পারেন +#;-#;+0এই উত্তরটি আমার পক্ষে সত্যিই বিভ্রান্তিকর ছিল।
কামিল জাজোট

56

সাবধান থাকুন, শর্তাধীন বিন্যাসটি নেতিবাচক মানটি ব্যবহার করার সময় স্বয়ংক্রিয়ভাবে কোনও চিহ্ন পাওয়া যায় না। আপনার করা দরকার

string MyString = number.ToString("+#;-#;0");

অন্যরা যেমন উল্লেখ করেছে, +0;-#আপনাকে ক্লিনার কোড সহ একই ফলাফল দেয়।
অ্যান্ড্রু

32

আপনি স্ট্রিংয়ে ফর্ম্যাট স্ট্রিং ব্যবহার করতে পারেন For ফর্ম্যাট (); বিন্যাসের স্ট্রিংটি একটি কোলন (':') দিয়ে সূচক থেকে পৃথক করা হয়েছে

var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);

Number +1, -1, 0 number সংখ্যার জন্য এটি দেয়:

1, জোর চিহ্ন +1, শূন্যের জন্য কোন চিহ্ন নেই +1
-1, জোর চিহ্ন -1, শূন্যের জন্য কোনও চিহ্ন নেই -1
0, জোর চিহ্ন +0, শূন্য 0 এর জন্য কোনও চিহ্ন নেই

string.Formatএকই ফলাফল পাওয়ার পরিবর্তে আপনি একটি বিভক্ত স্ট্রিং ব্যবহার করতে পারেন :

var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";

আপনার উত্তরের শেষ লাইনে "ডিফল্ট ফর্ম্যাট 0, বল সাইন +, শূন্য 0 এর জন্য কোনও চিহ্ন নেই" বলা উচিত " কারণ এটি +#;-#0 মানের ফর্ম্যাটটির আসল ফলাফল
কামিল জাজোট

আপনাকে ধন্যবাদ, কামিল - আমি এটি মিস করেছি। আমি এখন ফোর্স সাইন ফর্ম্যাটটি সংশোধন করেছি: + #; - #; + 0 (+ #; - # এর পরিবর্তে)
এডওয়ার্ড

1
আপনি একটি সহজ বিন্যাস সঙ্গে বল চিহ্ন আচরণ পেতে পারেন: +0;-#। :)
অ্যান্ড্রু

@ অ্যান্ড্রু, প্রকৃতপক্ষে, তবে আমি এর +#;-#;+0চেয়ে বেশি পছন্দ করি +#;-#কারণ এটি পরিষ্কার করে দেয় যে 0 টি +0
এডওয়ার্ড

10

অন্যান্য উত্তরের বিপরীতে মনে হয় আপনি +1, -1, +0 (আর্গুমেন্ট 1, -1, 0) পেতে চাইলে আপনার ফর্ম্যাটটি ব্যবহার করা দরকার:

String.Format("{0:+#;-#;+0}", 0));  // output: +0

অথবা

String.Format("{0:+0;-#}", 0));  // output: +0

আপনি যদি কেবল ব্যবহার করেন তবে এটি 0 এর জন্য +#;-#প্রদর্শিত হবে +(না +0)।

"#" কাস্টম স্পেসিফায়ার ( https://msdn.microsoft.com/en-us/library/0c899ak8.aspx এ )

নোট করুন যে এই স্পেসিফায়ার কখনও কোনও শূন্য প্রদর্শন করে না যা তাৎপর্যপূর্ণ অঙ্ক নয়, এমনকি যদি শূন্যটিতে স্ট্রিংয়ের একমাত্র সংখ্যা হয়। এটি কেবলমাত্র শূন্য প্রদর্শন করবে যদি এটি প্রদর্শিত হচ্ছে এমন সংখ্যার একটি উল্লেখযোগ্য সংখ্যা।

এছাড়াও দয়া করে মনে রাখবেন যে আপনার যদি কোনও দশমিক নির্ভুলতার প্রয়োজন হয় তবে আপনার এটির মতো নির্দিষ্ট করতে হবে:

String.Format("{0:+0.##;-#.##}", 0));  // output: +0

বা, আপনি যদি সর্বদা দেখাতে শেরো না চান তবে তার মতো:

String.Format("{0:+0.00;-#.00}", 0));  // output: +0.00

1

যে কোনও ধরণের সংখ্যাসূচক প্রকাশের জন্য:

+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0

তিনটি ক্ষেত্রে তিনটি অংশ ব্যবহার করুন: ধনাত্মক; নেতিবাচক; শূন্য

উদাহরণের অন্যান্য দিক:

  • জিরো স্বাক্ষরিত নয়। আপনি এটি "শূন্য" এর মতো কোনও কিছুতে প্রদর্শন করতে পারেন।

  • দশমিক পয়েন্টের আগে একেরও কম সংখ্যার অগ্রণী মান থাকে leading স্বাদ সামঞ্জস্য করুন।

  • অঙ্কের সংখ্যাটি বৃহত্তম এবং ক্ষুদ্রতম পরম দশমিক মানের জন্য। স্বাদ সামঞ্জস্য করুন।

  • দশমিক পয়েন্ট চরিত্রটি সংস্কৃতি-নির্দিষ্ট। .NET বিকল্প।

  • গ্রুপিং বিভাজনকারীরা optionচ্ছিক। চরিত্রটি সংস্কৃতি-নির্দিষ্ট। .NET বিকল্প। (অবস্থানগুলি সংস্কৃতি-নির্দিষ্টও তবে এটি কেবল আপনার ফর্ম্যাট স্ট্রিং দ্বারা নিয়ন্ত্রিত)) আপনি বিন্যাসের জন্য বিশেষ অক্ষরগুলি বাদ দিয়ে অন্য কোনও অক্ষর ব্যবহার করেন (যার মধ্যে রয়েছে, # # 0)।


0

আমি মন্তব্য করতে পারি না তাই আমি এখানে একটি উত্তর দিই (বাদাম খ্যাতি সিস্টেম ....)

ইউটিসি স্ট্রিং টাইমফর্ম্যাটটি তৈরি করতে আপনি নম্বর ব্যবহার করতে পারেন ("+ 0; - #")

এখানে পাওয়ারশেল কোডে দেখানো হয়েছে

"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"

আপনাকে @gcores https://stackoverflow.com/users/40256/gcores ধন্যবাদ

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