View Full Version : تجمیع لغات موجود در چند فایل متنی در یک فایل و حذف لغات تکراری
Fahime_FM
یک شنبه 07 اردیبهشت 1393, 17:19 عصر
با سلام
من چندین فایل تکست دارم که می خوام لغات موجود در اونا رو در یک فایل متنی جدید وارد کنم و البته نمیخوام در فایل جدید، لغات تکراری باشند. در واقع میخوام vocabulary یا واژگان موجود در کل این فایل ها رو یک فایل جدید متنی داشته باشم
ممنون میشم کمکم کنید
cups_of_java
یک شنبه 07 اردیبهشت 1393, 22:00 عصر
اگه منظورتون این نیست که براتون نوشته بشه، سوالتون رو خیلی کلی پرسیدید.
به طور خاص بپرسید راهنمایی بدیم.
Mr.orange
یک شنبه 07 اردیبهشت 1393, 22:34 عصر
حتما باید با جاوا باشه؟! منظورم اینه که کدش واستون مهمه یا نتیجه کار؟
اگه نتیجه کار مهمه فایلها رو بدید درست کنم واستون؛ و یا با دستورات زیر در لینوکس خودتون هم میتونید ایحادشون کنید
cat f 1 f2 f3 f4 > f5
cat f5|sort| uniq
ولی اگه به زبان جاوا میخوایین؛ ترتیب کار اینطوری میشه که باید اپل فایلها رو یکی کنید (هر فایل رو به آخر فایل اصلی اضافه کنید)
بعد فایل اصلی رو مرتب کنید (با انواع الگوریتم های مرتب سازی & sort)
و بعد دادههای پشت سر هم که تکراری هستند رو حذف کنید ؛ که خب آسونه؛
۱ - یک خط رو میخونید؛
۲ - اگه خط بعدی مساوی با این خط بود میرید به سراغ خط بعدی
۳ - اگه مساوی نبود خط رو در فایل حدید ذخیره میکنید و میرید سراغ خط بعدی
محمد فدوی
دوشنبه 08 اردیبهشت 1393, 19:43 عصر
من یه حالت خاصش رو برات نوشتم که تازه اگه مطمینی فایلهات سایز بزرگی ندارن میتونه کمک کنه! در غیر اینصورت پیشنهاد می کنم با یه بافر فایلت رو تیکه تیکه بخونی. من فرض کردم توی فایل ها کلمات با یک فاصله از هم جدا شدن...
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
public final class WordCollection {
private final ArrayList<String> words;
public WordCollection() {
words = new <String>ArrayList();
}
public void scanFile(String path) throws FileNotFoundException, IOException {
String[] candidaWords;
{
File file = new File(path);
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length() - 1];
fis.read(data);
fis.close();
// YOU CAN EDIT THIS PART:
candidaWords = new String(data, "UTF-8").split(" ");
}
for(String w : candidaWords) {
if(!words.contains(w)) {
words.add(w);
}
}
}
public ArrayList<String> getWords() {
return words;
}
}
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.