الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

البحث عن ال String دون كتابته بشكل دقيق او كامل

بدأه kousai في 11 ديسمبر 2008 · 7 رد · 920 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

اقوم بعمل بحث ضمن نص ولكنني لا استطيع ان اجد الكلمة المراد البحث عنها الا اذا كتبتها كاملة ودقيقة بشكل تطابقي

هل يمكنني ان اضيف خاصية التشابه في الكلمة؟

انا اقوم بالبحث على اسماء المدن ضمن vector ولكنني اضطر الى كتابة الاسم الكامل وبشكل تطابقي حتى احصل على النتيجة والا فأنني احصل على exception بأن المدينة المطلوبة غير موجودة في النص

هل يوجد طريقة للحصول على الكلمة المرادة دون كتابتها بشكل كامل ودقيق

وهل يمكنني البحث عن جميع الكلمات التي تحتوي على احرف معينة

شــــــــــــــــكرا لكم

#2

اعرض الشيفرة لرؤيا أوضح

ما هي خوارزمية التشابه؟

كيف نقول أن كلمة تشبه كلمة؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

هذه هي الشيفرة اخي علاء

package PTest;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Vector;

import javax.swing.text.html.HTMLEditorKit;

public class OutputData {

 Vector<String> city = new Vector<String>();
 Vector<String> temp = new Vector<String>();

 /*
  * Die Methode liefert das aktuelle Tag-Datum
  */
 private String getDay() {
  Calendar cal = Calendar.getInstance();
  SimpleDateFormat dd = new SimpleDateFormat("dd");

  return dd.format(cal.getTime());
 }

 /*
  * Die Methode liefert das aktuelle Monat-Datum
  */
 private String getMonth() {
  Calendar cal = Calendar.getInstance();
  SimpleDateFormat mm = new SimpleDateFormat("MM");

  return mm.format(cal.getTime());
 }

 /*
  * Die Methode liefert das aktuelle Jahr-Datum
  */
 private String getYear() {
  Calendar cal = Calendar.getInstance();
  SimpleDateFormat yyyy = new SimpleDateFormat("yyyy");

  return yyyy.format(cal.getTime());
 }

 /*
  * Die Methode liefert die aktuelle Zeit
  */
 private String getTime() {
  Calendar cal = Calendar.getInstance();
  SimpleDateFormat hh = new SimpleDateFormat("HH");

  return hh.format(cal.getTime());
 }

 /*
  * HTML-Parsing, Zugriff auf einer Internetquelle.
  */
 private void run() {
  try {
   GetParser kit = new GetParser();
   HTMLEditorKit.Parser parser = kit.getParser();

   TagHandler th = new TagHandler(new OutputStreamWriter(System.out));

   URL url = new URL(
	 "http://www.wetteronline.de/cgi-bin/cgiakttab?TYP=temperatursyn&ART=tabelle&LANG=de&JJ="
	   + this.getYear()
	   + "&MM="
	   + this.getMonth()
	   + "&TT="
	   + this.getDay()
	   + "&TIME="
	   + this.getTime() + "00&KEY=DL&SORT=1");
   InputStream in = new BufferedInputStream(url.openStream());
   InputStreamReader r = new InputStreamReader(in);

   parser.parse(r, th, true);

  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 /*
  * Eine txt-Datei erstellen
  */
 private void createFile() {
  File file = new File("outputfile.txt");

  try {
   file.delete();

   System.setOut(new PrintStream(new FileOutputStream(file, true)));
  } catch (FileNotFoundException e) {

   e.printStackTrace();
  }
  this.run();
 }

 /*
  * Die Daten auslesen aus die erstellte txt-Datei
  */
 private void read() {
  Vector<String> v = new Vector<String>();
  String s;

  try {   
   FileReader file = new FileReader("outputfile.txt");
   BufferedReader br = new BufferedReader(file);


   while ((s = br.readLine()) != null) {

	v.add(s);
   }

   int r = v.indexOf("Temp.")+1;
   while(r < v.size()-2){
	city.add(v.get(r));
	temp.add(v.get(r+1));

	r = r+2;
   }
   br.close();
  }

  catch (Exception e) {
   System.out.println("Fehler bei der Eingabe - " + e);
  }
 }

 /*
  * search-Methode
  */
 public String searchs(String s) {

  int i = 0;

  this.createFile();
  this.read();
  try{
   while (city.get(i) != null && i < city.size()) {
	if (city.get(i).toLowerCase().equals(s.toLowerCase())) {
	 return city.get(i)+", "+temp.get(i)+"C";
	}
	i++;
   }
  }catch(Exception e){
   System.out.println(e);
  }
  return "Not found!!";
 }
 /*
  * search-Methode mit ausgabe als double
  */
 public double search(String s){
  int i = 0;

  this.createFile();
  this.read();
  try{
   while (city.get(i) != null && i < city.size()) {
	if (city.get(i).toLowerCase().equals(s.toLowerCase())) {
	 return Double.parseDouble(temp.get(i).substring(0, temp.get(i).length()-1));
	}
	i++;
   }
  }catch(Exception e){
   System.out.println(e);
  }
  return 0;
 }
}

شــــــــــــــــــــــــكرا

Meteo.rar

#4

بقي أن تجيبني على السؤال

ما هي المعايير التي يجب أن تنطبق على على كلمة أ لنقول أنها تشبه الكلمة ب؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5
علاء الصالحي كتب:
بقي أن تجيبني على السؤال

ما هي المعايير التي يجب أن تنطبق على على كلمة أ لنقول أنها تشبه الكلمة ب؟

تحياتي

أخي علاء شكرا لتجاوبك معي

عندي مشكلة انو المعايير اللي انا عم فكر فيها يمكن مارح اقدر طبقها بالجافا

متل ماشفت بالكود انا عم احفظ اسم المدينة ضمن vector اسمو city

ودرجات الحرارة ضمن vector أخر اسمه temp

public String searchs(String s) {

  int i = 0;

  this.createFile();
  this.read();
  try{
   while (city.get(i) != null && i < city.size()) {
	if (city.get(i).toLowerCase().equals(s.toLowerCase())) {
	 return city.get(i)+", "+temp.get(i)+"C";
	}
	i++;
   }
  }catch(Exception e){
   System.out.println(e);
  }
  return "Not found!!";
 }
 /*
  * search-Methode mit ausgabe als double
  */
 public double search(String s){
  int i = 0;

  this.createFile();
  this.read();
  try{
   while (city.get(i) != null && i < city.size()) {
	if (city.get(i).toLowerCase().equals(s.toLowerCase())) {
	 return Double.parseDouble(temp.get(i).substring(0, temp.get(i).length()-1));
	}
	i++;
   }
  }catch(Exception e){
   System.out.println(e);
  }
  return 0;
 }

المشكلة كالتالي

انا عندما اريد على سبيل المثال ان ابحث عن مدينة اخن الالمانية لأعرف ماهي درجة الحرارة فيها فانا مظطر لكاتبة Aachen (59m) لان اسم المدينة هكذا مخزن داخل ال vector

ولكن انا اريد ان اكتب فقط aachen دون كتابة ارتفاعها عن سطح البحر او على سبيل المثال عندما اكتب achn يعطيني الكلمات الموجودة فيها هذه الاحرف

هل هذا ممكن في الجافا ام انني مظطر لتغيير الفكرة من اساسها

شــــــــــــكرا

#6

بالتأكيد ممكن

أما أن تستخدم دوال String

وهي substring ,equals

أو تطلع على موضوع التعابير المنتظمة Regular Expression

وصلات من مدونتي عن الموضوع

لمحة جافاوية 27: التحقق من المدخلات

لمحة جافاوية 30: فحص المدخلات 2

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

اخي علاء انا عاجز عن شكرك سوف اقوم بقراءة وصلتي المدونة

شـــــــــــــــــــــــــــــــــــــــــــــــكرااااا

#8

في انتظار أسئلتك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة