CharSequence কে স্ট্রিংয়ে রূপান্তর করবেন?


205

আমি কিভাবে একটি জাভা রূপান্তর করতে পারেন CharSequenceএকটি থেকে String?

উত্তর:


339

এর toString()পদ্ধতিটি শুরু করে

এই ক্রম হিসাবে একই ক্রমে এই ক্রমের অক্ষরগুলি সমন্বিত একটি স্ট্রিং প্রদান করে। স্ট্রিংয়ের দৈর্ঘ্য এই ক্রমের দৈর্ঘ্য হবে।


@ দ্য অলি অ্যানিল, কলিং setText(CharSequence)কি আপনার প্রয়োজন অনুযায়ী কাজ করে না?
মাইক স্যামুয়েল

আমি অ্যাকশনবার শিরোনামটি ক্লিকযোগ্য করে তুলতে চাই।
TheOnlyAnil

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

স্ট্যাকওভারফ্লো আমাকে কোনও প্রশ্ন পোস্ট করতে দেবে না। : / বিটিডব্লিউ আমি গত রাতে এটি করেছি। কাস্টম অ্যাকশনবার হ'ল সমাধান :)
TheOnlyAnil

1
@ উইলবায়ারস যে আউটপুটটিকে চারসেকেন্সের অ্যারেতে স্ট্রিংয়ের মতো দেখাচ্ছে, চারসেকেন্স নয়।
মাইক স্যামুয়েল

90

এখানে একটি সূক্ষ্ম সমস্যা আছে যা কিছুটা গোটচা।

toString()পদ্ধতিতে একটি বেস বাস্তবায়ন হয়েছে ObjectCharSequenceএকটি ইন্টারফেস; এবং যদিও toString()পদ্ধতিটি সেই ইন্টারফেসের অংশ হিসাবে উপস্থিত হয়, সংকলন-সময় এমন কোনও কিছুই নেই যা আপনাকে এটিকে ওভাররাইড করতে বাধ্য করবে এবং CharSequence toString()পদ্ধতির জাভাদোক পদ্ধতিটিতে যে অতিরিক্ত বাধা রেখেছিল তা সম্মান করবে toString(); অর্থাত্‍ এটির ক্রম অনুসারে অক্ষরগুলি সহ একটি স্ট্রিং প্রদান করা উচিতcharAt()

আপনার আইডিই এমনকি আপনাকে ওভাররাইড করা উচিত যে আপনাকে স্মরণ করিয়ে দিয়ে আপনাকে সাহায্য করতে পারে না toString()। উদাহরণস্বরূপ, ইন্টেলিজ-এ, আপনি যদি নতুন CharSequenceবাস্তবায়ন তৈরি করেন তবে এটি আপনি দেখতে পাবেন : http://puu.sh/2w1RJ । অনুপস্থিতি নোট করুনtoString()

আপনি উপর নির্ভর toString()একটি অবাধ উপর CharSequence, এটা করা উচিত নয় প্রদত্ত কাজ CharSequenceimplementer সঠিকভাবে তাদের কাজ করেনি। কিন্তু আপনি যদি কোন অনিশ্চয়তা পুরাপুরি এড়াতে চান, আপনি একটি ব্যবহার করা উচিত StringBuilderএবং append()তাই মত:

final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();

9
আপনার ভুল করা উচিত নয় / আপনার কোডটি আরও খারাপ করা উচিত কারণ অন্যরাও ভুল করেছে।
লোডউইজক

9
নতুন স্ট্রিংবিল্ডার (চারসেকুয়েন্স) .toString () প্রদান করুন; একটি একক লাইন সমতুল্য।
গ্যাবার লিপটিক

22
এই উত্তরটি ভুল The CharSequenceইন্টারফেসটি স্পষ্টভাবে সংজ্ঞায়িত করে toString()- বাস্তবায়নকারী এটি মিস করবেন না। Javadoc যুক্তরাষ্ট্র "একটি স্ট্রিং এই ক্রম হিসাবে একই ক্রম এই ক্রমানুসারে অক্ষর ধারণকারী দেখায়। স্ট্রিং এর দৈর্ঘ্য এই ক্রম দৈর্ঘ্য হতে হবে" মধ্যে শুরু থেকেই 1.4লোকেরা, দয়া করে আপনি কী
উত্তোলন করেছেন

2
এটা বোকামি. আপনি যদি চুক্তিটি অনুসরণের জন্য প্রয়োগকারীকে বিশ্বাস না করেন তবে সমস্ত বেট বন্ধ রয়েছে। এটি একটি প্যারামিটার হিসাবে পাস StringBuilderকরা পাশাপাশি আপনি যা প্রত্যাশা করেছিলেন তা করতে ব্যর্থ হতে পারে। একইরকম অন্য কোনও ইন্টারফেসের ক্ষেত্রে যেমন, Listবা Setবিশেষত তাদের equals()এবং hashCode()পদ্ধতিগুলি যা ওভাররাইড ছাড়াই সংকলন করবে, কিন্তু চুক্তি অনুসারে ওভাররাইড করা আবশ্যক
shmosel

3
ইন্টারফেসটি এটি করে তা এই যুক্তিতে তর্কযোগ্যভাবে সিদ্ধান্ত এবং আমার উত্তরটি হাইলাইট করে যে এটি মানুষের ত্রুটি হওয়ার জন্য স্বাভাবিকের চেয়ে সহজ জায়গা normal
অগভীর

19

আপনি সরাসরি স্ট্রিং.ভালিউওফ () ব্যবহার করতে পারেন

String.valueOf(charSequence)

যদিও এটি ঠিক একইভাবে toString()এটি charSequenceআসলে স্ট্রিং কল করার আগে একটি নাল চেক করে ।

এটি কার্যকর যখন কোনও পদ্ধতি কোনও মান charSequenceবা nullমান ফেরত দিতে পারে ।


8
এই আসলে আজ আমাকে বিট। যদি charSequenceনাল হয় তবে ফেরত স্ট্রিংটি হবে "null"এবং না null
ক্রিসটমাস

উহু. বোধ হয়। আমি এই উত্তরটি সরিয়ে দেব
অভিষেক বত্রা

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