আমি কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে পাঠ্যের প্রতিটি অক্ষর প্রক্রিয়া করতে পারি?


361

আমি স্ট্রিংয়ের প্রতিটি স্বতন্ত্র চিঠিটি সতর্ক করতে চাই তবে এটি কীভাবে করবেন তা সম্পর্কে আমি নিশ্চিত নই।

সুতরাং, যদি আমার কাছে থাকে:

var str = 'This is my string';

আমি টি, এইচ, আই, এস, ইত্যাদি পৃথকভাবে সতর্ক করতে সক্ষম হতে চাই এটি আমি যে ধারণা নিয়ে কাজ করছি এটি কেবলমাত্র শুরু, তবে প্রতিটি অক্ষর কীভাবে পৃথকভাবে প্রক্রিয়াকরণ করা যায় তা আমার জানতে হবে।

আমি jQuery ব্যবহার করতে চাই এবং ভেবেছিলাম স্ট্রিংয়ের দৈর্ঘ্য কী তা পরীক্ষা করার পরে আমার বিভক্ত ফাংশনটি ব্যবহার করার প্রয়োজন হতে পারে।

ধারনা?


3
সম্ভবত আপনি এটি খুঁজছিলেন: ES6 হিসাবে, আছে for(const c of str) { ... }। এর আরও নীচে আরও বেশ কিছু বিশদে বিশদে তবে যথেষ্ট পরিমাণে উত্তরের উত্তর নেই। পিএস: @ আরজুনের লিঙ্কটি আমার পক্ষে কাজ করে না।
সর্বোচ্চ

উত্তর:


419

সতর্কতার ক্রমটি যদি গুরুত্বপূর্ণ হয় তবে এটি ব্যবহার করুন:

for (var i = 0; i < str.length; i++) {
  alert(str.charAt(i));
}

যদি সতর্কতার ক্রমের কোনও গুরুত্ব না আসে তবে এটি ব্যবহার করুন:

var i = str.length;
while (i--) {
  alert(str.charAt(i));
}


2
ব্যবহার []একটি নির্দিষ্ট অবস্থানে গৃহস্থালির কাজ পেতে আই ই <9 সমর্থিত নয়
VSync

13
অন্য উত্তরে বর্ণিত হিসাবে, আপনি [] এর স্থানে str.charAt (i) ব্যবহার করতে পারেন। আপনার চারএট বনাম [] ব্যবহার করার জন্য কেন আরও তথ্যের জন্য দেখুন, স্ট্রিং.চার্ট (এক্স) বা স্ট্রিং দেখুন [এক্স]
জুলিয়ান সোরো

12
আমার বিশ্বাস করা কঠিন যে কোনও আধুনিক জেএস সংকলক লুপের অভ্যন্তরে স্ট্রিংটি সংশোধন না করা থাকলে দৈর্ঘ্যটি পুনরায় গণনা করবে। অন্য প্রতিটি ভাষায় আমি আনন্দের সাথে সংক্ষেপকারকে সবচেয়ে ভাল জেনে ধরে এবং সেই অনুযায়ী এটি অপ্টিমাইজ করব, ধরে রেখে লুপের পরীক্ষার ধারাটিতে দৈর্ঘ্যের চেকটি আনন্দের সাথে করব।
এচেলন

3
@ ডাগমার: জাভাস্ক্রিপ্টটি ইউটিএফ -8 ব্যবহার করে না, এটি ইউটিএফ -১ uses (বা ব্রাউজারের উপর নির্ভর করে ইউসিএস -২) ব্যবহার করে। প্রতিটি একক অক্ষরকে ইউটিএফ -8 বা ইউটিএফ -16 হিসাবে উপস্থাপন করা যেতে পারে তবে এই সমস্যাটি নেই। সমস্যাগুলি কেবলমাত্র দুটি বাইটের পরিবর্তে ইউটিএফ -16 এ চারটি বাইট প্রয়োজন। A এমন একটি চরিত্র যা ইউটিএফ -16 এ চারটি বাইট প্রয়োজন। আরও তথ্যের সন্ধানের মূল শর্তগুলি হ'ল "অ্যাস্ট্রাল প্লেন", "নন-বিএমপি" এবং "সারোগেট জুড়ি"।
হিপ্পিট্রেইল

1
@ ডাগমার: জাভা এবং জাভাস্ক্রিপ্ট উভয়েরই ইউটিএফ -16 (পূর্বে ইউসিএস-) মিল রয়েছে। এটি ব্যবহার করা তৃতীয় বড় প্ল্যাটফর্ম হ'ল উইন্ডোজ। ইউনিক্স, ম্যাকোস এবং ইন্টারনেট প্রোটোকলগুলি ইউটিএফ -8 ব্যবহার করে। charAtইউসিএস -২ দিন বাদে যখন কোনও সার্গেট জুড়ি ছিল না এবং সমস্যাটি সমাধানের জন্য একটি নতুন ফাংশনটি codepointAtজাভাস্ক্রিপ্টে যুক্ত করা হয়েছিল যা আমাদের বন্ধুত্বপূর্ণ স্তরের পুর সঠিকভাবে পরিচালনা করে। আমি বিশ্বাস করি জাভাও আছে।
হিপ্পিট্রেইল

240

এটি সম্ভবত সমাধানের চেয়ে আরও বেশি। কেবল অন্য একটি সহজ সমাধানের সাথে অবদান রাখতে চাই:

var text = 'uololooo';

// With ES6
[...text].forEach(c => console.log(c))

// With the `of` operator
for (const c of text) {
    console.log(c)
}

// With ES5
for (var x = 0, c=''; c = text.charAt(x); x++) { 
    console.log(c); 
}

// ES5 without the for loop:
text.split('').forEach(function(c) {
    console.log(c);
});

4
সর্বশেষ উদাহরণটি সহজভাবে হতে পারে[...text].forEach(console.log)
গোবিন্দ রাই

10
না, এটা পারে না। forEach()সূচক এবং অ্যারেটিকে দ্বিতীয় এবং তৃতীয় আর্গুমেন্ট হিসাবে পাস করে। আমি বরং এটি লগইন করব না
মিঃ গোফেরিতো

1
মনে রাখবেন যে স্প্রেড অপারেটর (প্রথম উদাহরণ) এবং স্প্লিট কল (শেষ উদাহরণ) উভয়ই একটি নতুন অ্যারে তৈরি করবে। এটি সাধারণত কোনও সমস্যা হবে না তবে এটি বড় স্ট্রিং বা ঘন ঘন ব্যবহারের জন্য ব্যয়বহুল হতে পারে।
র্যান্ডলফো

কী সম্পর্কেfor (let c of [...text]) { console.log(c) }
ফ্লেম

এটি দিয়ে আপনি স্ট্রিং থেকে একটি নতুন অ্যারে তৈরি করুন। উপকার দেখছি না। let c of textইতিমধ্যে কাজ করে।
মিঃ গোফেরিতো

73

খাঁটি জাভাস্ক্রিপ্টে সম্ভাব্য সমাধান:

for (var x = 0; x < str.length; x++)
{
    var c = str.charAt(x);
    alert(c);
}

এটি সম্ভবত var x = 0 এবং var c = str.charAt (x) এর সাথে ভাল।
ধনী

2
এছাড়াও, স্ট্রিংলেন্থ একটি ভেরিয়েবলের মধ্যে সংরক্ষণ করা উচিত যাতে এটি অ্যাক্সেস করা রাখা হয় না।
এলি গ্রে

8
@ এলিগ্রি কি ভেরিয়েবলের দৈর্ঘ্য রাখা সত্যিই গুরুত্বপূর্ণ? আপনার কি বেঞ্চমার্ক রয়েছে যখন কোডের কম লাইন থাকার চেয়ে এটি পছন্দনীয় হবে?
pm_labs

@ পল_স্নস আকর্ষণীয়ভাবে, কমপক্ষে এজ (একটি 10000 উপাদান অ্যারের জন্য 0.7ms পার্থক্য) মধ্যে একটি সামান্য পার্থক্য বলে মনে হচ্ছে : jsfiddle.net/carcigenicate/v8vvjoc1/1 । সম্ভবত একটি নিখুঁত পরীক্ষা নয়, তবে এটি গড়ে 10000 পরীক্ষার উপর ভিত্তি করে।
কারসিজিনিট

1
@ পল_স্নস আরও আকর্ষণীয়ভাবে, প্রায় 2% সময়ের মধ্যে ক্রোম একই পরীক্ষা করেছিল (5 মিলিয়ন ডলার বনাম ~ 0.0997ms) এবং উভয় সংস্করণ একই সময় দিয়েছে তাই দেখে মনে হচ্ছে এজটি অনুকূলিত হয়নি।
কারসিজেনিকেট

69

পাঠ্যের প্রতিটি অক্ষর কীভাবে প্রক্রিয়াকরণ করবেন (মানদণ্ড সহ)

https://jsperf.com/str-for-in-of-foreach-map-2

জন্য

ক্লাসিক এবং এখন পর্যন্ত সর্বাধিক পারফরম্যান্স সহ । আপনি যদি কোনও পারফরম্যান্স সমালোচনামূলক অ্যালগরিদমে এটি ব্যবহার করার পরিকল্পনা করছেন বা এটির ব্রাউজার সংস্করণগুলির সাথে সর্বাধিক সামঞ্জস্যের প্রয়োজন হয় তবে আপনার এটির সাথে যেতে হবে।

for (var i = 0; i < str.length; i++) {
  console.info(str[i]);
}

জন্য ... এর

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

let result = '';
for (let letter of str) {
  result += letter;
}

প্রতিটির জন্য, প্রত্যেকটির জন্য

কার্যকরী পদ্ধতির। এয়ারবিএনবি অনুমোদিত হয়েছে । এইভাবে এটি করার বৃহত্তম ক্ষতি হচ্ছে split(), যা স্ট্রিংয়ের প্রতিটি স্বতন্ত্র চিঠি সংরক্ষণের জন্য একটি নতুন অ্যারে তৈরি করে।

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

// ES6 version.
let result = '';
str.split('').forEach(letter => {
  result += letter;
});

অথবা

var result = '';
str.split('').forEach(function(letter) {
  result += letter;
});

নিম্নলিখিতগুলি আমি অপছন্দ করি।

এ জন্য

... এর থেকে পৃথক, আপনি চিঠির পরিবর্তে চিঠি সূচক পান। এটি বেশ খারাপভাবে সম্পাদন করে।

var result = '';
for (var letterIndex in str) {
  result += str[letterIndex];
}

মানচিত্র

ফাংশন পদ্ধতির, যা ভাল। তবে মানচিত্রটি এর জন্য ব্যবহার করা বোঝায় না। অ্যারের অভ্যন্তরে মানগুলি পরিবর্তন করার প্রয়োজনে এটি ব্যবহার করা উচিত, এটি ক্ষেত্রে নয়।

// ES6 version.
var result = '';
str.split('').map(letter => {
  result += letter;
});

অথবা

let result = '';
str.split('').map(function(letter) {
  result += letter;
});

1
আমার মেশিনে ক্লাসিক forলুপটি আসলে দ্বিতীয় ধীর for...ofছিল , যখন ছিল দ্রুততম (প্রায় তিনগুণ দ্রুত for)।
জন মন্টগোমেরি

1
মানদণ্ডটি কোথায়? দ্রুততম সমাধান কি?
পোয়েট্রোয়ে

1
@ জোহনিভি, যা দু'বছর আগে ছিল এবং লিঙ্কটি শেষ হয়ে গেছে তাই আমি নিশ্চিত না যে আপনি কীভাবে আমার কাছে ফলাফলটি রক্ষা করতে পারলে আমি ফিরে এসেছি। একটি নতুন বেঞ্চমার্ক স্থাপন এখন forলুপ সামান্য দ্রুত হওয়ার সাথে সাথে জুরফেক্সের উপসংহারের সাথে একমত ।
জন মন্টগোমেরি

1
@ জনমন্টগোমেরি আমি আশা করি আপনি কিছু করবেন না। ভবিষ্যতের পাঠকদের জন্য কেবল একটি নোট যা আপনার ফলাফলের উত্তরের চেয়ে আলাদা। আমি ব্যক্তিগতভাবে জানতে চাই যে আজ 2020 এর ফলাফলগুলি ব্রাউজারগুলিতে প্রয়োগ হয়, তবে '2018 এত দিন আগে ছিল না। কোন লিঙ্কটি মারা গেছে?
জননী কেন

1
@ জোহনিউই সমস্ত আসল পরীক্ষার সাথে শীর্ষে থাকা লিঙ্কটি আমার জন্য একটি ৪০৪ ফিরিয়ে দিচ্ছে।
জন মন্টগোমেরি

42

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

জাভাস্ক্রিপ্ট সমস্ত স্ট্রিংয়ের জন্য ইউটিএফ -16 ইউনিকোড ব্যবহার করে। ইউটিএফ -16 এ, বিএমপি ছাড়িয়ে অক্ষর দুটি অংশ থেকে তৈরি করা হয়, " সারোগেট পেয়ার " নামে পরিচিত এবং এখানে বেশিরভাগ উত্তর একক চরিত্রের পরিবর্তে এই জাতীয় জোড়গুলির প্রতিটি অংশ পৃথকভাবে প্রক্রিয়া করবে।

কমপক্ষে ২০১ since সাল থেকে আধুনিক জাভাস্ক্রিপ্টের একটি উপায় হ'ল নতুন স্ট্রিং ইটারেটর ব্যবহার করা । এখানে এমডিএন থেকে সরাসরি (প্রায়) উদাহরণ রয়েছে:

var string = 'A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A';

for (var v of string) {
  alert(v);
}
// "A"
// "\uD835\uDC68"
// "B"
// "\uD835\uDC69"
// "C"
// "\uD835\uDC6A"


4
: বিভাজন করার জন্য একটি আধুনিক সমাধান জন্য অক্ষর মধ্যে একটি স্ট্রিং যখন অ্যাকাউন্ট ভাড়াটে জোড়া গ্রহণ দেখতে stackoverflow.com/a/42596897/527702
hippietrail

20

আপনি এটি চেষ্টা করতে পারেন

var arrValues = 'This is my string'.split('');
// Loop over each value in the array.
$.each(arrValues, function (intIndex, objValue) {
    alert(objValue);
})

11
তবুও একটি বিকল্প, তবে পারফরম্যান্ট নয়। JQuery কোথাও রাখবেন না।
ক্যাগাতে


10

যখন আমার শর্ট কোড বা ওয়ান লাইনার লিখতে হবে তখন আমি এই "হ্যাক" ব্যবহার করি:

'Hello World'.replace(/./g, function (char) {
    alert(char);
    return char; // this is optional 
});

এটি নিউলাইনগুলি গণনা করবে না যাতে এটি ভাল জিনিস বা খারাপ জিনিস হতে পারে। যদি আপনি নিউলাইনগুলি অন্তর্ভুক্ত করেন তবে প্রতিস্থাপন করুন: /./সাথে /[\S\s]/। অন্যান্য ওয়ান-লাইনার আপনি সম্ভবত ব্যবহার করতে পারেন .split()যার মধ্যে অনেকগুলি সমস্যা রয়েছে


সেরা উত্তর. ইউনিকোডের সাথে অ্যাকাউন্টে সমস্যাগুলি গ্রহণ করে এবং। ম্যাপ () ইত্যাদির সাথে ক্রিয়ামূলক নির্মাণের সাথেও ব্যবহার করা যেতে পারে
রোফ্রোল

শুধু জিনিস আমি পছন্দ করি না এই এক সম্পর্কে যখন আমি এক্সেস চান প্রেরণ অতিরিক্ত প্যারাম forEachকল ফাংশন বনাম প্যারাম পাঠানোreplace । আমি যদি জানি যে আমি ASCIIing করছি তবে আমার মনে হয় এর জন্য এখনও কিছু ব্যবহারের মামলা রয়েছে split। দুর্দান্ত উত্তর, যদিও!
রাফিন


1
আমি ভেবেছিলাম uপতাকাটি সহ পতাকাটি না থাকলে ইউনিকোড সমস্যাগুলি বিবেচনায় নেবে না g? ঠিক আছে পরীক্ষিত এবং আমি ঠিক ছিল।
হিপ্পিট্রেইল

9

নতুন জেএস এটির অনুমতি দেয়:

const str = 'This is my string';
Array.from(str).forEach(alert);

8

স্টেটে ইউনিকোড অক্ষর থাকলে স্টেটে বিভিন্ন বাইট সাইজের কারণে ... স্টেটমেন্টের জন্য ... ব্যবহার করা ভাল।

for(var c of "tree 木") { console.log(c); }
//"𝐀A".length === 3

7

সংক্ষিপ্ত উত্তর: Array.from(string)আপনি সম্ভবত যা চান তা আপনাকে দেবে এবং তারপরে আপনি এটির পুনরাবৃত্তি করতে পারেন বা এটি যেহেতু এটি কেবল একটি অ্যারে।

ঠিক আছে এই স্ট্রিং সঙ্গে এটি চেষ্টা করা যাক: abc|⚫️\n⚪️|👨‍👩‍👧‍👧

কোডপয়েন্টগুলি হ'ল:

97
98
99
124
9899, 65039
10
9898, 65039
124
128104, 8205, 128105, 8205, 128103, 8205, 128103

তাই কিছু অক্ষরের একটি কোডপয়েন্ট (বাইট) থাকে এবং কারও কারও কাছে দু'জন বা তার বেশি থাকে এবং অতিরিক্ত পরীক্ষার জন্য একটি নতুন লাইন যুক্ত হয়।

সুতরাং পরীক্ষার পরে দুটি উপায় আছে:

  • বাইট প্রতি বাইট (কোডপয়েন্ট প্রতি কোডপয়েন্ট)
  • চরিত্র গোষ্ঠী (তবে পুরো পরিবার ইমোজি নয়)

string = "abc|⚫️\n⚪️|👨‍👩‍👧‍👧"

console.log({ 'string': string }) // abc|⚫️\n⚪️|👨‍👩‍👧‍👧
console.log({ 'string.length': string.length }) // 21

for (let i = 0; i < string.length; i += 1) {
  console.log({ 'string[i]': string[i] }) // byte per byte
  console.log({ 'string.charAt(i)': string.charAt(i) }) // byte per byte
}

for (let char of string) {
  console.log({ 'for char of string': char }) // character groups
}

for (let char in string) {
  console.log({ 'for char in string': char }) // index of byte per byte
}

string.replace(/./g, (char) => {
  console.log({ 'string.replace(/./g, ...)': char }) // byte per byte
});

string.replace(/[\S\s]/g, (char) => {
  console.log({ 'string.replace(/[\S\s]/g, ...)': char }) // byte per byte
});

[...string].forEach((char) => {
  console.log({ "[...string].forEach": char }) // character groups
})

string.split('').forEach((char) => {
  console.log({ "string.split('').forEach": char }) // byte per byte
})

Array.from(string).forEach((char) => {
  console.log({ "Array.from(string).forEach": char }) // character groups
})

Array.prototype.map.call(string, (char) => {
  console.log({ "Array.prototype.map.call(string, ...)": char }) // byte per byte
})

var regexp = /(?:[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g

string.replace(regexp, (char) => {
  console.log({ 'str.replace(regexp, ...)': char }) // character groups
});


7

আপনি এখন স্ট্রিংয়ের মধ্যে থাকা স্বতন্ত্র ইউনিকোড কোড পয়েন্টগুলি ব্যবহার করে পুনরাবৃত্তি করতে পারেন String.prototype[@@iterator], যা সুপরিচিত প্রতীক প্রকারের মান দেয় Symbol.iterator- অ্যারের মতো অবজেক্টগুলির জন্য Stringএই ক্ষেত্রে ডিফল্ট পুনরাবৃত্তি ( এই ক্ষেত্রে)।

উদাহরণ কোড:

const str = 'The quick red 🦊 jumped over the lazy 🐶! 太棒了!';

let iterator = str[Symbol.iterator]();
let theChar = iterator.next();

while(!theChar.done) {
  console.log(theChar.value);
  theChar = iterator.next();
}

// logs every unicode character as expected into the console.

এটি ইউনিকোড অক্ষর যেমন ইমোজি বা নন-রোমান চরিত্রগুলির সাথে কাজ করে যা উত্তরাধিকারের কাঠামোকে আরও বাড়িয়ে তুলবে।

তথ্যসূত্র: এমডিএন স্ট্রিং.প্রোটোটাইপ @@ পুনরুক্তি লিঙ্ক


2
নোট করুন যে আপনি for ... ofস্ট্রিংয়ের উপর দিয়ে একটি লুপের সাথে সংক্ষিপ্ত পদ্ধতিতে এটি করতে পারেন - এটি পুনরুক্তি অ্যাক্সেসের জন্য সিনট্যাক্স চিনির।
আদিত্য এমপি

6

আপনি এখন ব্যবহার করতে পারেন মধ্যে শব্দ।

    var s = 'Alien';
    for (var c in s) alert(s[c]);


ইন-ব্যবহার করা খারাপ অনুশীলন এবং ভয়াবহ যখন
অসম্পূর্ণ

4
@ ডাউনগোট কেন? এটা খারাপ কি? আমি বোঝাতে চাইছি যদি আমি এমন পরিস্থিতিতে থাকি যেখানে আমি জানি যে আমার জাভাস্ক্রিপ্ট ইঞ্জিন দ্বারা 'ইন' সমর্থিত, এবং আমার কোডটি অন্য ইঞ্জিনে প্রবেশ করতে পারে না ... কেন এটি ব্যবহার করবেন না?
TKoL

@TKoL দেখুন এই
অ্যালান

@ অ্যালান inভাষার একটি বৈধ অংশ। জিনিসগুলি যথাযথভাবে ব্যবহার করুন। আপনার নিবন্ধটি সতর্ক করে যে inআলফা কীগুলি সংখ্যাসূচক কীগুলির মতোই ব্যাখ্যা করে। তাই? আপনি এটি চান হতে পারে। এটি আরও বলা যেতে পারে যে অন্যান্য পদ্ধতিগুলি ভুলভাবে আলফা কীগুলি উপেক্ষা করে। ইমো, ofসঠিক আচরণ আছে। জেএস অ্যারেতে, আলফা কী ছাড়া উপাদানগুলির এখনও কী রয়েছে: সংখ্যাসূচক। আমার কনসোলে, জেএস "সঠিকভাবে" আলফা কীটি সংখ্যাসূচক কীগুলির মতোই আচরণ করে:>const arr = ['a', 'b'] >arr.test = 'hello' >arr 0: "a" 1: "b" test: "hello" length: 2
জোনি

5

আপনি যেমন পৃথক অক্ষরের একটি অ্যারে পেতে পারেন

var test = "test string",
    characters = test.split('');

এবং তারপরে নিয়মিত জাভাস্ক্রিপ্ট ব্যবহার করে লুপ করুন, না হলে আপনি jQuery দ্বারা স্ট্রিংয়ের অক্ষরগুলি পুনরাবৃত্তি করতে পারেন

var test = "test string";

$(test.split('')).each(function (index,character) {
    alert(character);
});

5

আপনি এই স্ট্রিংটি ব্যবহার করে অক্ষরের অ্যারে রূপান্তর করতে পারেন split(), তারপরে পুনরাবৃত্তি করুন।

const str = "javascript";
const strArray = str.split('');

strArray.map(s => console.log(s));


স্পষ্টতই এটি ইউনিকোড অক্ষর এবং গ্রাফিক চিহ্নগুলির সাথে ব্যর্থ।
জনী কেন

4

আপনি যদি একটি চরিত্রের স্তরের পাঠ্যে কোনও রূপান্তর করতে চান এবং শেষে পরিবর্তিত পাঠ্যটি ফিরে পেতে চান তবে আপনি এরকম কিছু করতে পারেন:

var value = "alma";
var new_value = value.split("").map(function(x) { return x+"E" }).join("")

সুতরাং পদক্ষেপগুলি:

  • অক্ষরের একটি অ্যারে (তালিকা) এ স্ট্রিংটি বিভক্ত করুন
  • প্রতিটি চরিত্রকে একটি ফান্টারের মাধ্যমে ম্যাপ করুন
  • চারটি ফলাফলের অ্যারে একসাথে ফলাফলের স্ট্রিংয়ে যোগ দিন

0

আজকের জাভাস্ক্রিপ্ট আপনি করতে পারেন

Array.prototype.map.call('This is my string', (c) => c+c)

স্পষ্টতই, সি + সি আপনি গ এর সাথে যা কিছু করতে চান তা উপস্থাপন করে।

এই ফিরে আসে

["TT", "hh", "ii", "ss", " ", "ii", "ss", " ", "mm", "yy", " ", "ss", "tt", "rr", "ii", "nn", "gg"]


সম্ভবত:[...'This is my string'].map((c)=>c+c)
অ্যালান

0

এটি পুরানো ব্রাউজারগুলিতে এবং ইউটিএফ -16 অক্ষরের সাথে 💩 এর মতো কাজ করা উচিত 💩

এটি সবচেয়ে সুসংগত সমাধান হওয়া উচিত। তবে এটি forলুপের চেয়ে কম পারফরম্যান্ট ।

আমি রেজিস্পু ব্যবহার করে নিয়মিত এক্সপ্রেশন তৈরি করেছি

var str = 'My String 💩 ';
var regEx = /(?:[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g


str.replace(regEx, function (char) {
    console.log(char)
});

আশাকরি এটা সাহায্য করবে!


"কম পারফোম্যান্ট" বলতে কী বোঝ? আমি মনে করি আপনি "ধীর" বলতে চাইছেন কারণ এটি প্রয়োজনীয়তার সাথে আরও উপযুক্ত এবং এটি কার্যকরভাবে সম্পাদন করে।
হিপ্পিট্রেইল

-1

আপনি বা এর সাথে একক অক্ষর অ্যাক্সেস করতে পারেন । তবে পরবর্তী উপায়টি ECMAScript এর অংশ নয় তাই আপনি আগেরটির সাথে আরও ভাল যান।str.charAt(index)str[index]


আমি এটা থেকে দূরে থাকব। দুর্ভাগ্যক্রমে এটি IE এর সমস্ত সংস্করণে কাজ করে না। আমাকে বিশ্বাস কর. আমি এটা হার্ড উপায় শিখেছি।
জাভি 17

3
এটি ECMAScript এর অংশ, তবে কেবলমাত্র সদ্য প্রকাশিত 5 তম সংস্করণে, তৃতীয় নয়।
কঙ্গাক্স

-1

আপনি যদি প্রতিটি চরিত্রকে অ্যানিমেট করতে চান তবে আপনার এটিকে স্প্যান এলিমেন্টে মোড়ানো প্রয়োজন হতে পারে;

var $demoText = $("#demo-text");
$demoText.html( $demoText.html().replace(/./g, "<span>$&amp;</span>").replace(/\s/g, " "));

আমি মনে করি এটি করার সর্বোত্তম উপায় এটি তারপরে স্প্যানগুলি প্রসেস করুন। (উদাহরণস্বরূপ টিউনম্যাক্স সহ)

টিউনম্যাক্স.স্ট্যাগগারফ্রমটো ($ ডেমো টেক্সট.ফাইন্ড ("স্প্যান")), 0.2, {অটোআল্ফা: 0}, {অটোআল্ফা: 1}, 0.1);


-1

এই কোড ব্যবহার করে দেখুন

    function myFunction() {
    var text =(document.getElementById("htext").value); 
    var meow = " <p> <,> </p>";
    var i;


    for (i = 0; i < 9000; i++) {

        text+=text[i] ;



    }

    document.getElementById("demo2").innerHTML = text;

}
</script>
<p>Enter your text: <input type="text" id="htext"/>

    <button onclick="myFunction();">click on me</button>
</p>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.