جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
کد تخفیف اسنپ تاکسی با 20% تخفیف! دریافت کد
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

ساخت سیستم تغییر کلمات


3
0
1299

سلام من میخوام یه برنامه تحت وب با جاوااسکریپت بسازم که یه متن بهش بدی و کلماتی که از پیش تعیین شده رو توی اون متن جایگزین کنه و مثلا من میخوام بگم هر جا کلمه زیبا رو دیدی اون رو به کلمه قشنگ تغییر بده و خروجی متن رو به من بده. من میخوام حدود 10 هزار معادل به این شکل به برنامه بدم تا در متنی که بهش میدیم هر جا دیدشون جایگزینشون کنه.

من زبان تحت سرور بلد نیستم برای زخیره سازی این 10 هزار کلمه میشه بدون استفاده از دیتابیس پیش رفت ؟ و اگر میشه یه توضیح کلی در مورد نحوه اجرای این کار به من بگید ممنون

علمی جاوا-اسکریپت
سوال شده در حذف شده 25
282 امتیاز

500 کاراکتر باقی مانده

2 جواب

2

انجام دادن همچین کاری سمت کلایت (با زبان javascript) کار بهینه و منطقی نیست. چرا که این حجم از دیتا باعث پر شد رم مرورگر و اختلال در عمکرد سیستم میشه. امروزه کامپیوتر‌ها خیلی سریع شدن و حداقل-ریسورس خب خیلی زیاد تر شده نسبت به سابق. ولی با این حال، ده هزار کلمه (که گاها شاید یه سریاش چند-کلمه ای باشه) دیتای به نسبت سنگینیه که توی مرورگر یه تاخیری ایجاد میکنه. مخصوصا اگه با دیوایسی مثل موبایل یا تبلت باشی که خب به مراتب این اختلال بیشتر و به وضوح دیده میشه و قابل لمسه.

پس به نظر من خیلی خیلی بهینه تر و سریع تر هستش که این کار رو کاملا سمت دیتابیس انجام بدی؛ البته در صورتی که قصد داری به صورت دائم و همیشگی این replacement یا همون جایگزینی رو انجام بدی. از اونجایی که زبان سمت سرور بلد نیستی و نمی‌دونم از چه دیتابیسی می خوای استفاده کنی، سعی می کنم الگوریتم کلیش رو برات بنویسم:

  1. ساختن یک دیتابیس (بانک اطلاعاتی)
  2. ساختن یک جدول برای واژگان
  3. بارگزاری (import) کلمات فعلی (همون ده هزار کلمه) و کلمات جایگزین (دقیقا ده هزار کلمه جایگزین هم باید وجود داشته باشه) در جدول واژگان (در 2 ستون مختلف)
  4. ساختن یک جدول دیگه برای متونی که قراره این جایگزینی توشون اتفاق بیوفته
  5. ایجاد یک رابطه join() بین دو جدول مطروحه و استفاده از تابع جایگزینی replace() بر روی اونها
  6. استفاده از بروزرسانی update clause برای تثبیت این جایگزینی در جدول متون

بعد از سپری کردن موارد بالا، تمام جایگزینی های مورد نظر در متون فعلی ما، در کسری از ثانیه اتفاق میوفته و توی همون جدول ذخیره هم میشه. بد نیست این رو هم بگم که به منظور افزایش عملکرد و سرعت انجام این فرایند، متناسب با کوئری که نوشته میشه، بهتره که ایندکس های مورد نیاز هم روی ستون های مورد نیاز در جداول ایجاد بشه. موفق باشید.

ویرایش شده در 6 سال قبل
جواب داده شده در سعید مرادی
1933 امتیاز

500 کاراکتر باقی مانده


2

ببینید چون حجم کلماتتون زیاده (10 هزارتا عدد کمی نیست و حجم زیادی داره) خیلی بهتره که از دیتابیس استفاده بشه. یا حداقل از یک فایل استفاده کنید و هر سری بخشی از محتوا رو از اونجا بردارید و پردازشتون رو روش انجام بدید. هدف اینه که تمام دیتا (این 10 هزار کلمه) همه همزمان روی رم سرور قرار نگیرند.

اگه هم سخت افزار سرورتون به اندازه کافی قوی هست و از این نظر مشکلی ندارید، می تونید از یک آرایه جاوا اسکریپتی استفاده کنید و روش لوپ بزنی که چیزی که می خوای رو میشه باهاش هندل کرد. به این صورت:

var words = ["زیبا", "عالی", "قوی"],
alt_w = ["قشنگ", "خیلی خوبی", "نیرومند"];

var context = "امروز یک روز زیبا است و من احساس عالی دادم."

var res = words.reduce((acc, item, i) => {
  const regex = new RegExp(item, "g");
  return acc.replace(regex, alt_w[i]);
}, context);

console.log(res);

خروجی:

امروز یک روز قشنگ است و من احساس خیلی خوبی دادم.

نمونه آنلاین

ویرایش شده در 6 سال قبل
جواب داده شده در ساناز رضایی
1366 امتیاز


ببخشید من نفهمیدم چرا کد رو به سمت عبارت های باقاعده بردید. میشه توضیح بدید؟ ــ حذف شده 25 در 6 سال قبل
1
@امیرحمزه.باقری در زبان php یک تابع برای این کار وجود داره به اسم strtr() که دقیقا کارش همینه، یعنی یک آرایه از کلمات رو بهش میدی که به صورت نظیر به نظیر با یک آرایه دیگه از کلمات جایگزینشون می کنه. ولی توی جاوا اسکریپت باید با ریجکس اینو هندل کرد. حداقل من اینطوری بلدم ــ ساناز رضایی در 6 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


لام تا کام نسخه صفحه کلید نیز راه اندازی شده است. شما با استفاده از کلیدهای موجود بر روی صفحه کلید دستگاهتان می توانید با وب سایت ارتباط برقرار کنید.
لیست کلید های میانبر

تبلیغات توضیحی


عرشیان از کجا شروع کنم ؟
تغییر و تحول با استاد سید محمد عرشیانفر

تبلیغات تصویری


کپی