স্ট্রিংটি শেষে এবং / অথবা স্ট্রিংয়ের শুরুতে কীভাবে রাখবেন?


358

আমাকে আমার সংস্থান / মান ফাইলগুলি থেকে এই দুটি স্ট্রিংটি যুক্ত করতে হবে:

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>

আমি এটি এইভাবে করি:

String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+total_flips+getString(R.string.Toast_Memory_GameWon_part2);

Toast.makeText(this, message_all_pairs_found, 1000).show();

তবে প্রথম স্ট্রিংয়ের শেষে এবং দ্বিতীয় স্ট্রিংয়ের শুরুতে ফাঁকা স্থানগুলি অদৃশ্য হয়ে গেছে (যখন টোস্টটি প্রদর্শিত হবে) ...

আমার কি করা উচিৎ ?

আমি অনুমান করি উত্তরটি এখানে কোথাও এই ডকুমেন্টেশন লিঙ্কে রয়েছে

বা এটি &amp ;"&" চরিত্রের জন্য ব্যবহার করার মতো কিছু ??


2
কয়েকটি ভাল উত্তর আছে, কিন্তু তাদের কেউই আমার পক্ষে কাজ করে না (আমার মন্তব্য দেখুন)। অনুগ্রহটি এমন কোনও উত্তরের জন্য যা স্ট্রিং রিসোর্সের প্রথম বা শেষ অক্ষর হিসাবে সত্যিকারের স্থান অক্ষর (ইউ + 0020) পাওয়ার উপায় সরবরাহ করে।
টমাস

3
কদর্য অদ্ভুত অ্যান্ড্রয়েড :(
ভ্লাদ স্প্রেস

উত্তর:


501

এমনকি যদি আপনি স্ট্রিং ফর্ম্যাটিং ব্যবহার করেন তবে কখনও কখনও আপনার স্ট্রিংয়ের শুরুতে বা শেষে আপনার সাদা স্পেস প্রয়োজন। এই ক্ষেত্রে, না দিয়ে পলায়ন \, না xml:spaceবৈশিষ্ট্য সাহায্য করে helps &#160;একটি সাদা স্থানের জন্য আপনাকে অবশ্যই HTML সত্ত্বা ব্যবহার করতে হবে ।

&#160;অবিচ্ছিন্ন সাদা স্থানের জন্য ব্যবহার করুন । নিয়মিত জায়গার জন্য
ব্যবহার করুন &#032;


12
এই ধরণের কাজ করে তবে এটি নিয়মিত জায়গার পরিবর্তে একটি অবিচ্ছেদী স্থান (U + 00A0) সন্নিবেশ করে। এটি কিছু পরিস্থিতিতে অনাকাঙ্ক্ষিত হতে পারে।
টমাস

50
& # 160 কাজ করে না ... এক্সএমএল সম্পাদক একটি ত্রুটি দেয় এবং আপনি প্রকল্পটি তৈরি করতে পারবেন না ... fine u0020 ভাল কাজ করে!
jcamacho

10
আপনাকে শেষে আধা কোলন (;) যুক্ত করতে হবে।
ব্যবহারকারী 1010160

36
00 u0020 সাধারণত ভাল সমাধান the & # 032; আপনার এইচটিএমএল বিশ্লেষণ করা দরকার এবং কিছু ক্ষেত্রে এলোমেলোভাবে উপেক্ষা করা যেতে পারে যার ফলে কোনও স্থান নেই
হেইডেনকাই

5
অ্যানড্রয়েড স্টুডিও ৩.২ এ একটি এপিআই 25 এমুলেটর স্থাপন করে আমি ব্যবহার &#032;করেছি এবং আমার কোনও বিল্ড ত্রুটি পাওয়া যায় নি, তবে আমার স্থানটি এখনও উপেক্ষা করা হয়েছিল। &#160;কাজ করেছে, তবে আমি একটি ব্রেক-অবিচ্ছিন্ন সাদা স্থান চাই না। আমি শুধু একটি নিয়মিত জায়গা চাই। \u0020কাজ করছে.
সীমানা

489

আমি একই ইস্যু মধ্যে দৌড়ে। আমি অন-স্ক্রীন ক্ষেত্রের নামটি উপস্থাপন করে এমন একটি উত্স স্ট্রিংয়ের শেষে একটি ফাঁকা ছেড়ে যেতে চেয়েছিলাম।

আমি এই সমস্যার প্রতিবেদনে একটি সমাধান পেয়েছি: https://github.com/iBotPeaches/Apktool/issues/124

এটিই একই ধারণা যা দুয়েসি পরামর্শ দেয়। ঢোকান \u0020একটি ফাঁকা আপনি সংরক্ষণ করতে চাই জন্য XML সরাসরি।

উদাহরণ:

<string name="your_id">Score :\u0020</string>

প্রতিস্থাপনটি নির্মাণের সময় করা হয়, সুতরাং এটি আপনার গেমের কার্য সম্পাদনকে প্রভাবিত করবে না।


দুর্দান্ত কাজ করে এটি ব্যবহার করে & # 160 এর মধ্যে পার্থক্য কী তা অবাক করে দেখুন;
অ্যান্ড্রয়েড বিকাশকারী

3
@ অ্যান্ড্রয়েড ডেভেলপার, আপনি একটি ইউনিকোড চরিত্রটিকে পালানোর ক্রম হিসাবে নির্দেশ করেছেন (সরাসরি ফাইলটিতে ইউনিকোড চর নয়)। & # NNN; এইচটিএমএল সত্তাকে নির্দেশ করে, যার অর্থ আপনি আপনার এক্সএমএল স্ট্রিংকে এইচটিএমএল পার্স করার উপর নির্ভর করছেন (পাঠ্য দর্শনে এটি ডিফল্টরূপে ব্যবহৃত হয়)। দেখুন w3schools.com/html/html_entities.asp
greg7gkb

@ গ্রেগ 7gkb আকর্ষণীয়, তবে আমি এটি ডিফল্টরূপে জানতাম না। আপনি বোঝাতে চাইছেন যে আমি যদি স্ট্রিং রিসোর্সে "সেটটেক্সট" ব্যবহার করি তবে এটি কি একই রকম কাজ করবে?
অ্যান্ড্রয়েড বিকাশকারী

@ অ্যান্ড্রয়েড ডেভেলপার হ্যাঁ, আমি সবেমাত্র কোডে এটি নিশ্চিত করেছি। আপনার স্ট্রিং এক্সএমএল ফাইলে এইচটিএমএল সত্তা থাকতে পারে এবং সেগুলি সেটটেক্সট (int resId) দিয়ে ডিফল্টরূপে রূপান্তরিত হবে। উদাহরণ: <স্ট্রিং নাম = "পরীক্ষা"> টি & # 160; এস & # 160; টি & # 160; </string>।
greg7gkb

5
\u0020ASCII কোডের স্পেস। এটি আমার প্রকল্পের জন্য সেরা পছন্দ যেহেতু আমাকে নিশ্চিত করতে হয়েছিল যে এটি ASCII।
ওয়ানওয়ার্ল্ড

138

এই ডকুমেন্টেশনটি উদ্ধৃত করে কাজ করবে বলে পরামর্শ দেয়:

<string name="my_str_spaces">" Before and after? "</string>

2
এটি কি গ্যারান্টি দেয়<string name="my_str_spaces">" Before <b>and</b> after? "</string>
প্রীতেক

5
ইউনিকোড অক্ষর ব্যবহার না করে এর চেয়ে বেশি পছন্দ করুন! ধন্যবাদ!
সুমিত অনন্ত্বর

2
দুর্ভাগ্যক্রমে কিছু স্থানীয়করণ সরঞ্জাম, যেমন পাসোলো, স্বয়ংক্রিয়ভাবে উদ্ধৃতির আগে স্ল্যাশ যুক্ত করে। এবং স্ট্রিং এ হয়ে যায়: <স্ট্রিং নাম = "আমার_স্ট্র_স্পেসস"> \ "আগে এবং পরে? \" </ স্ট্রিং>। সুতরাং, এই উদ্ধৃতিটি পাঠ্যে প্রদর্শিত হবে। সুতরাং এই ক্ষেত্রে using u0020 ব্যবহার করা আরও ভাল বলে মনে হচ্ছে।
ফক্স

আমি ডকুমেন্টেশনে কোথাও এটি উল্লিখিত দেখতে পাই না। সবচেয়ে কাছের আমি দেখতে পাচ্ছি এটি Enclose the entire string in double quotes ("This'll work", for example)যেখানে এ থেকে পালানোর বিষয়ে আলোচনা করে Single quote (')
সীমানা

এটি আমার পক্ষে কাজ করে না
জেমস রিওর্ডান

38

আমি কেবল স্ট্রিং.এক্সএমএল ফাইলটিতে "\ u0020" স্পেসের জন্য ইউটিএফ কোডটি ব্যবহার করি।

<string name="some_string">\u0020The name of my string.\u0020\u0020</string>

দুর্দান্ত কাজ করে (অ্যান্ড্রয়েড ইউটিএফ কোড পছন্দ করে)


2
এটি আমার পক্ষে কাজ করেছিল যেখানে গৃহীত উত্তরটি দেয় নি।
ল্যান্স


21

এই প্রশ্নটি পুরানো হতে পারে তবে এখন পর্যন্ত এটি করার সবচেয়ে সহজ উপায় হ'ল উদ্ধৃতি চিহ্ন যুক্ত করা। উদাহরণ স্বরূপ:

<string name="Toast_Memory_GameWon_part1">"you found ALL PAIRS ! on "</string>
<string name="Toast_Memory_GameWon_part2">" flips !"</string>

এটি পুরোপুরি কাজ করে। কোটাওয়েশনের চিহ্নগুলি "আপনার পাঠ্য" দিয়ে স্রেফ আপনার কাঙ্ক্ষিত পাঠকে ঘিরে দিন
তরুণ কুমার

10

বিভিন্ন প্রস্থের সাথে স্পেস করা সম্ভব:

<string name="space_demo">|&#x20;|&#x2009;|&#x200A;||</string>

| স্পেস | থিন স্পেস | চুল স্পেস | কোন স্থান |

ভিজুয়ালাইজেশান:

এখানে চিত্র বর্ণনা লিখুন


8

আপনি যদি সত্যিই এটিই করতে চান তবে আমার মনে হয় যে সাদা অংশটি এড়িয়ে গিয়ে প্রাসঙ্গিক তা আপনাকে বলতে হবে:

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string>
<string name="Toast_Memory_GameWon_part2">\ flips !</string>

তবে, আমি এর জন্য স্ট্রিং ফর্ম্যাটিং ব্যবহার করব নিম্নলিখিত মত কিছু:

<string name="Toast_Memory_GameWon">you found ALL PAIRS ! on %d flips !</string>

তারপর

String message_all_pairs_found = String.format(getString(R.string.Toast_Memory_GameWon), total_flips);

1
ব্যাকস্ল্যাশ দিয়ে পালানো কোনও কাজ করে না (আমার পক্ষে কমপক্ষে)। ফর্ম্যাট স্ট্রিং ব্যবহার করা একটি দুর্দান্ত সমাধান সাধারণত, তবে সর্বদা নয়। উদাহরণস্বরূপ, String.formatঅনেক গেমের অবাঞ্ছিত মেমরি বরাদ্দ দেয়।
টমাস

স্পেস ছেড়ে যাওয়া ("\" ব্যবহার করে) আমার পক্ষেও কার্যকর হয়নি।
অ্যান্ড্রয়েড বিকাশকারী

ফর্ম্যাটিং কেবল তখনই কাজ করে যদি আপনার পাঠ্যটি একই স্টাইলে প্রদর্শিত হয়। আমার ক্ষেত্রে 2 টি জিনিস যোগ দেওয়া হচ্ছে বোল্ড বনাম স্বাভাবিক এবং বিভিন্ন রঙ।

5

স্ট্রিং রিসোর্স মান সহ "" ব্যবহার করুন।

উদাহরণ: "স্পেস সহ মান"

অথবা

স্পেসগুলির জন্য \ u0020 কোড ব্যবহার করুন।


4

ভাল কাজ করছি আমি \ u0020 ব্যবহার করছি

<string name="hi"> Hi \u0020 </string>
<string name="ten"> \u0020 out of 10  </string>
<string name="youHaveScored">\u0020 you have Scored \u0020</string>

জাভা ফাইল

String finalScore = getString(R.string.hi) +name+ getString(R.string.youHaveScored)+score+ getString(R.string.ten);
               Toast.makeText(getApplicationContext(),finalScore,Toast.LENGTH_LONG).show();

এখানে স্ক্রিনশট এই কোডটির কাজ করে দেখানোর চিত্র


2

প্রোগ্রাম যুক্তভাবে স্থান যুক্ত করার জন্য একটি যুক্তি তৈরি করা যেতে পারে। যেহেতু এই ক্ষেত্রে প্রায়ই concatenations ব্যবহার করা হবে, আমি উন্মাদ থামাতে এবং মাত্র পুরাতন না সিদ্ধান্ত নিয়েছে + " " +। এগুলি বেশিরভাগ ইউরোপীয় ভাষায় বোঝা যাবে, আমি সংগ্রহ করব।


1

এখানে সমস্ত উত্তর আমার পক্ষে কার্যকর হয়নি। পরিবর্তে, XMLআমি একটি স্ট্রিংয়ের শেষে একটি স্থান যুক্ত করতে এটি করেছি did

<string name="more_store">more store<b> </b> </string>

0

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

<string name="Toast_Memory_GameWon_part1" xml:space="preserve">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2" xml:space="preserve"> flips !</string>

দুর্ভাগ্যক্রমে, xml:spaceঅবহেলিত বলে মনে হচ্ছে।
টমাস

0

এটি প্রকৃতপক্ষে প্রশ্নের উত্তর না দিতে পারে (এক্সএমএলে হোয়াইটস্পেসগুলি কীভাবে রাখবেন) তবে এটি অন্তর্নিহিত সমস্যাটিকে আরও করুণভাবে সমাধান করতে পারে।

কেবলমাত্র এক্সএমএল সংস্থানগুলিতে নির্ভর করার পরিবর্তে বিন্যাসের স্ট্রিংগুলি ব্যবহার করে সম্মতি দিন ate তাই প্রথমে হোয়াইটস্পেসগুলি সরিয়ে ফেলুন

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on</string>
<string name="Toast_Memory_GameWon_part2">flips !</string>

এবং তারপরে আপনার স্ট্রিংটি আলাদাভাবে তৈরি করুন:

String message_all_pairs_found = 
      String.format(Locale.getDefault(), 
                    "%s %d %s", 
                    getString(R.string.Toast_Memory_GameWon_part1),
                    total_flips,
                    getString(R.string.Toast_Memory_GameWon_part2);

Toast.makeText(this, message_all_pairs_found, 1000).show();


-1

অন্যান্য স্ট্রিংগুলির সাথে পরে এটি যুক্ত করার উদ্দেশ্যে যদি আপনার স্পেসের প্রয়োজন হয় তবে আপনি আপনার স্ট্রিং সংজ্ঞাটিতে যুক্তি যুক্ত করার স্ট্রিং ফর্ম্যাটিং পদ্ধতির ব্যবহার করতে পারেন:

<string name="error_">Error: %s</string>

তারপরে স্ট্রিংটি ফর্ম্যাট করার জন্য (উদাহরণস্বরূপ, যদি আপনার কোনও ত্রুটি সার্ভার দ্বারা ফিরে আসে, অন্যথায় ব্যবহার করুন getString(R.string.string_resource_example)):

String message = context.getString(R.string.error_, "Server error message here")

যার ফলাফল:

Error: Server error message here

-6

এটি এক্সএমএল: স্পেস = "সংরক্ষণ" দিয়ে কাজ করে না

সুতরাং আমি এটি দ্রুততম পদ্ধতিতে করেছি =>

যেখানে আমি এটি প্রয়োজন সেখানে আমি কেবল একটি "" "যুক্ত করেছি ...

String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);

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