از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش معکوس کردن یک رشته در جاوا اسکریپت معکوس کردن یک رشته در توسعه غیرمعمول نیست و برای سؤالات مصاحبه سطح پایه نسبتاً محبوب است. با جاوا اسکریپت، ما راه های زیادی برای معکوس کردن یک رشته داریم که تا حدودی شبیه به معکوس کردن یک آرایه است. ما می توانیم ترکیبی از متد split() رشته و همچنین متد reverse() و join() آرایه (از آنجایی که…
سرفصلهای مطلب
معرفی
معکوس کردن یک رشته در توسعه غیر معمول نیست، و نسبتا محبوب برای سوالات مصاحبه سطح مقدماتی با جاوا اسکریپت، ما راه های زیادی برای معکوس کردن یک رشته داریم که تا حدودی شبیه به معکوس کردن یک آرایه است. می توانیم از ترکیب رشته ها استفاده کنیم split()
روش و همچنین آرایه reverse()
و join()
روشها (از آنجایی که رشتهها در نهایت آرایههایی از کاراکترها هستند).
ما همچنین می توانیم یک رشته را با توابع تکرار شونده (حلقه) یا بازگشتی خود معکوس کنیم.
در این راهنما، ما به چندین روش برای معکوس کردن یک رشته در جاوا اسکریپت نگاهی خواهیم انداخت.
استفاده از روش های داخلی برای معکوس کردن رشته – شکاف()، معکوس() و پیوستن()
ساده ترین راه برای معکوس کردن یک رشته در جاوا اسکریپت، تقسیم یک رشته به یک آرایه است. reverse()
آن و join()
آن را به یک رشته برگرداند. با ES6، این را می توان کوتاه و ساده کرد:
let string = "!onaiP"
string = (...string).reverse().join("");
console.log(string); // "Piano!"
در اینجا از Spread Syntax استفاده می شود رشته را شکافت به یک آرایه و از نظر عملکردی معادل است split()
روش، که شما همچنین می توانید به جای آن استفاده کنید.
برای درک اینکه چرا همه آنها با هم کار می کنند، بیایید مروری کنیم که هر تابع چه می کند.
شکاف()
این split()
متد آرایه جدیدی از رشته ها را پس از تقسیم یک رشته با جداکننده ارائه شده برمی گرداند:
string.split(separator, limit)
این separator
محل تقسیم رشته به عنصری در آرایه حاصل را مشخص می کند. می توانیم تعداد عنصر آرایه را با عدد تعریف کنیم limit
پارامتر. وقتی از split()
روش با یک رشته خالی، ''
، رشته تقسیم می شود روی هر شخصیت. زمانی که رشته خود را به آرایه ای از کاراکترهای مجزا تبدیل کنیم، به کار می آید.
باز هم می توانید از عملگر spread برای رسیدن به همان نتیجه استفاده کنید. عملگر spread یک اپراتور جاوا اسکریپت است که کار می کند روی تکرارها مانند آرایه، رشته و اشیا. میتوانیم اشیا و آرایهها را با استفاده از عملگر spread کپی و به هم متصل کنیم:
(...myVar, 4, 5, 6) // combines myVar array with the given elements
myFunc(...myVar) // Use the myVar's elements as argument to the function
هنگامی که عملگر spread با یک رشته استفاده می شود، رشته به دنباله ای از کاراکترها تبدیل می شود:
let str = 'hello';
console.log((...str)); // ("h","e","l","l","o")
console.log(str.split('')); // ("h","e","l","l","o")
توجه داشته باشید: در حین تقسیم کاراکترهای UTF-16، به جای کاراکتر از عملگر spread استفاده کنید split()
روش.
معکوس()
این reverse()
یک آرایه معکوس را در محل برمی گرداند. به این معنا که – آرایه اصلی به جای یک کپی که در نتیجه برگردانده می شود معکوس می شود:
let str = ('a','b','c','d');
let reversedStr = str.reverse();
console.log(str); // ("d","c","b","a")
console.log(reversedStr); // ("d","c","b","a")
شما این کار را نمی کنید نیاز برای تخصیص نتیجه به یک متغیر جدید، معمولاً این کار را برای تغییر نام متغیر به یک متغیر نشاندهندهتر انجام میدهیم.
پیوستن()
این join()
متد عناصر یک آرایه را به هم متصل می کند و یک رشته را برمی گرداند. همچنین می توانیم a را مشخص کنیم separator
، که اختیاری است، برای پیوستن به عناصر. هنگامی که از جداکننده پیش فرض استفاده می کنیم، عناصر با یک کاما در رشته از هم جدا می شوند. استفاده از یک رشته خالی به عنوان جداکننده، عناصر آرایه را به هم متصل می کند و طبق معمول به عنوان یک رشته باز می گردد:
let str = ('a','b','c','d');
console.log(str.join('')); // "abcd"
console.log(str.join()); // "a,b,c,d"
console.log(str.join(' - ')); // "a - b - c - d"
ترکیب روش های داخلی برای معکوس کردن رشته
با در نظر گرفتن همه اینها – روش کار اینها با هم بصری می شود:
let str = 'guitar';
console.log('The original string is: ' + str);
let splitStr = str.split(''); // ("g","u","i","t","a","r")
let reversedArr = splitStr.reverse();
let reversedStr = reversedArr.join('');
console.log("The reversed string is: " + reversedStr);
یا می توانید آن را به این موارد کوتاه کنید:
let reversedStr = (...str).reverse().join('');
// Or
let reversedStr = str.split('').reverse().join('');
کد بالا نتیجه می دهد:
The original string is: guitar
The reversed string is: ratiug
با استفاده از a برای برای معکوس کردن رشته حلقه بزنید
با یک حلقه for، میتوانیم روی هر کاراکتر از رشته تکرار کنیم. با شروع از انتهای رشته تا ابتدای رشته – می توانیم به طور مداوم کاراکترها را به یک رشته جدید اضافه کنیم و بنابراین یک رشته معکوس تشکیل دهیم:
const str = 'guitar';
console.log('The original string is: ' + str);
let reversedStr = '';
for (let i = str.length - 1; i >= 0; i--) {
reversedStr += str(i);
}
console.log('The reversed string is: ' + reversedStr);
در اینجا، ما یک رشته خالی ایجاد کردیم، reversedStr
، برای نگه داشتن رشته معکوس. شاخص های رشته مانند اندیس های آرایه هستند، از 0 شروع می شوند. بنابراین، ما حلقه را از یک کمتر از طول رشته شروع کردیم (با برداشتن حرف r
) و حلقه بزنید تا شمارنده ما به 0 برسد (با حرف g
).
این reversedStr
متغیر عناصر رشته را به هم متصل می کند.
اجرای کد این خروجی را به ما می دهد:
The original string is: guitar
The reversed string is: ratiug
استفاده از Recursion برای معکوس کردن رشته
بازگشت یک است process جایی که یک تابع خود را فراخوانی می کند. با این حال، تابعی که خود را فراخوانی می کند، ممکن است در نهایت خود را به طور بی نهایت فراخوانی کند process هرگز بدون شرایط خروج. بنابراین، ما یک شرط، یعنی وضعیت پایه، برای پایان دادن به رفتار بازگشتی تابع.
ما میتوانیم با نوشتن چند خط کد بدون دردسر تکرار، از بازگشت برای حل مشکلات استفاده کنیم. با این حال، این process اگر عمق بازگشت زیاد باشد می تواند کند باشد.
نحو یک تابع بازگشتی عمومی به صورت زیر است:
function recursion(){
.......
base condition
recursion()
.......
}
recursion()
وقتی که recursion()
تابع فراخوانی می شود، ابتدا برخی از شرایط را بررسی می کند و در صورت ارزیابی به true
– تابع خود را فراخوانی می کند. این process سپس تکرار می شود، دوباره و دوباره. وقتی شرط ناموفق باشد، بازگشت متوقف می شود و تابع یک مقدار را برمی گرداند.
میتوانیم از بازگشت برای معکوس کردن یک رشته در جاوا اسکریپت با استفاده از روشهای رشتهای مانند
substring()
وcharAt()
.
این substring()
متد بخشی از رشته را استخراج می کند. می توانیم شاخص های شروع و پایان را در متد به عنوان پارامتر ارسال کنیم. اگر فقط شاخص شروع به متد ارائه شود – رشته را از آن شاخص تا آخرین مورد استخراج می کند.
اما، هنگامی که هر دو شاخص شروع و پایان را ارائه می کنیم، رشته را از شاخص شروع استخراج می کند اما شاخص پایان را شامل نمی شود:
let str = 'hello'
console.log(str.substring(1)) //"ello"
console.log(str.substring(1,3)) //"el"
این charAt()
متد کاراکتر ایندکس شده را از یک رشته استخراج می کند. یک رشته جدید متشکل از کاراکتر را برمی گرداند. نمونه ای از روش در زیر نشان داده شده است.
let str = 'hello'
console.log(str.charAt(2)) // "l"
برای تابع بازگشتی ما – ابتدا بررسی می کنیم که آیا رشته به عنوان خالی است یا خیر وضعیت پایه. پس از یک سری تماس های بازگشتی، رشته خالی می شود و بازگشت به پایان می رسد. درون reverse()
تابع، بازگشتی reverse()
تابع داده شده است substring(1)
به عنوان پارامتر آن
این charAt()
روش با reverse()
تابع در عبارت return:
function reverse(str) {
if (str === '')
return '';
else
return reverse(str.substring(1)) + str.charAt(0);
}
let str = 'guitar'
console.log('The original string is: ' + str);
const output = reverse(str);
console.log('The reversed string is: ' + output);
در اولین تماس بازگشتی، reverse("guitar")
نتیجه خواهد داد reverse("uitar") + "g"
. در تماس دوم، reverse("uitar")
نتیجه خواهد داد reverse("itar") + "u"
. به همین ترتیب، آخرین تماس بازگشتی، reverse("o")
یک را برمی گرداند reverse("")+ "r"
.
در حال حاضر اعدام از else
قسمت خاتمه می یابد و بازگشت به عمق خود برمی گردد. در آخرین تماس، رشته r
به اضافه می شود reverse('')
، که نتیجه آن رشته است r
.
در مرحله بعد، فراخوانی تابع یک پله بالاتر از محل رشته حرکت می کند a
به اضافه می شود reverse("r")
. رشته را می سازد ra
. به همین ترتیب، t
با اضافه می شود ra
، و می شود rat
. به طور مشابه، عمق بازگشت به سمت بالا طی می شود و در نهایت رشته را برمی گرداند. ratiug
:
The original string is: guitar
The reversed string is: ratiug
نتیجه
در این مقاله روش معکوس کردن یک رشته را مورد بحث قرار دادیم. ما از توکار استفاده کردیم split()
، reverse()
و join()
روش ها، اپراتور گسترش، ایجاد کرد for
حلقه هایی که یک رشته معکوس جدید و یک تابع بازگشتی با استفاده از ایجاد می کند substring()
و charAt()
که همگی نتایج یکسانی داشتند.
منتشر شده در 1403-01-14 02:59:06