আমি একটি আছে charএবং আমি একটি প্রয়োজন String। আমি কীভাবে একজনের থেকে অন্যটিতে রূপান্তর করব?
আমি একটি আছে charএবং আমি একটি প্রয়োজন String। আমি কীভাবে একজনের থেকে অন্যটিতে রূপান্তর করব?
উত্তর:
আপনি ব্যবহার করতে পারেন Character.toString(char)। নোট করুন যে এই পদ্ধতিটি কেবল একটি কলকে কল করে String.valueOf(char), যা কাজ করে।
অন্যরা যেমন উল্লেখ করেছে, স্ট্রিং কনটেনটেশন শর্টকাট হিসাবেও কাজ করে:
String s = "" + 's';
তবে এটি সংকলন করে:
String s = new StringBuilder().append("").append('s').toString();
যা কম দক্ষ কারণ StringBuilderএকটি দ্বারা ব্যাক হয় char[](দ্বারা ওভার বরাদ্দ StringBuilder()করতে 16শুধু তাই অ্যারের defensively ফলে দ্বারা কপি করা জন্য) String।
String.valueOf(char)charএকটি একক-উপাদান অ্যারেতে আবৃত করে এবং এটি প্যাকেজ ব্যক্তিগত কন্সট্রাক্টরের কাছে পৌঁছে দিয়ে "পিছনের দরজায় যায়" String(char[], boolean), যা অ্যারে অনুলিপি এড়ায়।
new StringBuilder("").append('s').toString();
দুর্দান্ত প্রশ্ন। এটি করার জন্য আমি নীচের পাঁচটি 6 টি পদ্ধতি পেয়েছি ।
// #1
String stringValueOf = String.valueOf('c'); // most efficient
// #2
String stringValueOfCharArray = String.valueOf(new char[]{x});
// #3
String characterToString = Character.toString('c');
// #4
String characterObjectToString = new Character('c').toString();
// #5
// Although this method seems very simple,
// this is less efficient because the concatenation
// expands to new StringBuilder().append(x).append("").toString();
String concatBlankString = 'c' + "";
// #6
String fromCharArray = new String(new char[]{x});
নোট: Character.toString (গৃহস্থালির কাজ করা) ফেরৎ String.valueOf (গৃহস্থালির কাজ করা) । সুতরাং কার্যকরভাবে উভয় একই।
String.valueOf(char[] value)আহ্বান করে new String(char[] value), যা ঘুরে ঘুরে valueঅ্যারে সেট করে ।
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
অন্যদিকে String.valueOf(char value)নিম্নলিখিত প্যাকেজ বেসরকারী নির্মাণকারীর প্রার্থনা করে ।
String(char[] value, boolean share) {
// assert share : "unshared not supported";
this.value = value;
}
থেকে সোর্স কোড String.javaমধ্যে জাভা 8 সোর্স কোড
সুতরাং
String.valueOf(char)রূপান্তরcharকরার জন্য মেমরি এবং গতি উভয়ের ক্ষেত্রেই এটি সবচেয়ে কার্যকর পদ্ধতি বলে মনে হচ্ছেString।
নীচে চর সিতে স্ট্রিংয়ে রূপান্তর করার বিভিন্ন উপায় রয়েছে (গতি এবং দক্ষতার ক্রম হ্রাসে)
char c = 'a';
String s = String.valueOf(c); // fastest + memory efficient
String s = Character.toString(c);
String s = new String(new char[]{c});
String s = String.valueOf(new char[]{c});
String s = new Character(c).toString();
String s = "" + c; // slowest + memory inefficient
@ ওয়ারফক্স যেমন বলেছে - চরকে স্ট্রিংয়ে রূপান্তর করার জন্য 6 টি পদ্ধতি রয়েছে। যাইহোক, দ্রুততম এটি কনটেনটেশনের মাধ্যমে হবে, উপরের উত্তর সত্ত্বেও এটি রয়েছে String.valueOf। এখানে প্রমাণিত হয়েছে যে বেঞ্চমার্ক:
@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, batchSize = 1000, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 1, batchSize = 1000, timeUnit = TimeUnit.SECONDS)
public class CharToStringConversion {
private char c = 'c';
@Benchmark
public String stringValueOf() {
return String.valueOf(c);
}
@Benchmark
public String stringValueOfCharArray() {
return String.valueOf(new char[]{c});
}
@Benchmark
public String characterToString() {
return Character.toString(c);
}
@Benchmark
public String characterObjectToString() {
return new Character(c).toString();
}
@Benchmark
public String concatBlankStringPre() {
return c + "";
}
@Benchmark
public String concatBlankStringPost() {
return "" + c;
}
@Benchmark
public String fromCharArray() {
return new String(new char[]{c});
}
}
এবং ফলাফল:
Benchmark Mode Cnt Score Error Units
CharToStringConversion.characterObjectToString thrpt 10 82132.021 ± 6841.497 ops/s
CharToStringConversion.characterToString thrpt 10 118232.069 ± 8242.847 ops/s
CharToStringConversion.concatBlankStringPost thrpt 10 136960.733 ± 9779.938 ops/s
CharToStringConversion.concatBlankStringPre thrpt 10 137244.446 ± 9113.373 ops/s
CharToStringConversion.fromCharArray thrpt 10 85464.842 ± 3127.211 ops/s
CharToStringConversion.stringValueOf thrpt 10 119281.976 ± 7053.832 ops/s
CharToStringConversion.stringValueOfCharArray thrpt 10 86563.837 ± 6436.527 ops/s
আপনি দেখতে পাচ্ছেন, দ্রুততমটি হবে c + ""বা "" + c;
VM version: JDK 1.8.0_131, VM 25.131-b11
এই পারফরম্যান্স পার্থক্যটি -XX:+OptimizeStringConcatঅপ্টিমাইজেশনের কারণে is আপনি এটি সম্পর্কে এখানে পড়তে পারেন ।
এটি চেষ্টা করুন: Character.toString(aChar)বা কেবল এটি:aChar + ""
আমরা বিভিন্ন উপায়ে একটি রূপান্তর করতে হবে charকরতে String। এক উপায় স্ট্যাটিক পদ্ধতি ব্যবহার করতে হয় toString()এ Characterশ্রেণী:
char ch = 'I';
String str1 = Character.toString(ch);
আসলে এই toStringপদ্ধতিটি অভ্যন্তরীণভাবে শ্রেণীর valueOfকাছ থেকে পদ্ধতি Stringব্যবহার করে যা চর অ্যারে ব্যবহার করে:
public static String toString(char c) {
return String.valueOf(c);
}
সুতরাং দ্বিতীয় উপায় হ'ল এটি সরাসরি ব্যবহার করা:
String str2 = String.valueOf(ch);
শ্রেণিতে এই valueOfপদ্ধতিটি Stringচর অ্যারে ব্যবহার করে:
public static String valueOf(char c) {
char data[] = {c};
return new String(data, true);
}
সুতরাং তৃতীয় উপায়টি হল একটি বেনামে অ্যারে ব্যবহার করে একটি একক অক্ষর মোড়ানো এবং তারপরে এটি Stringনির্মাণকারীর কাছে পৌঁছে দেওয়া :
String str4 = new String(new char[]{ch});
চতুর্থ উপায় সংযুক্তকরণের এর ব্যবহার করতে হয়:
String str3 = "" + ch;
এটি আসলে ক্লাস appendথেকে পদ্ধতিটি ব্যবহার করবে StringBuilderযা প্রকৃতপক্ষে পছন্দ করা হয় যখন আমরা একটি লুপে সংক্ষেপণ করি।
নির্দিষ্ট পদ্ধতিতে এখানে কয়েকটি পদ্ধতি রয়েছে:
char c = 'c';
String s = Character.toString(c); // Most efficient way
s = new Character(c).toString(); // Same as above except new Character objects needs to be garbage-collected
s = c + ""; // Least efficient and most memory-inefficient, but common amongst beginners because of its simplicity
s = String.valueOf(c); // Also quite common
s = String.format("%c", c); // Not common
Formatter formatter = new Formatter();
s = formatter.format("%c", c).toString(); // Same as above
formatter.close();
আমি চর অ্যারে স্ট্রিংয়ে রূপান্তর করছি
Char[] CharArray={ 'A', 'B', 'C'};
String text = String.copyValueOf(CharArray);
আমি পরামর্শগুলি চেষ্টা করেছি তবে নীচে এটি প্রয়োগ করে শেষ করেছি
editView.setFilters(new InputFilter[]{new InputFilter()
{
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend)
{
String prefix = "http://";
//make sure our prefix is visible
String destination = dest.toString();
//Check If we already have our prefix - make sure it doesn't
//get deleted
if (destination.startsWith(prefix) && (dstart <= prefix.length() - 1))
{
//Yep - our prefix gets modified - try preventing it.
int newEnd = (dend >= prefix.length()) ? dend : prefix.length();
SpannableStringBuilder builder = new SpannableStringBuilder(
destination.substring(dstart, newEnd));
builder.append(source);
if (source instanceof Spanned)
{
TextUtils.copySpansFrom(
(Spanned) source, 0, source.length(), null, builder, newEnd);
}
return builder;
}
else
{
//Accept original replacement (by returning null)
return null;
}
}
}});