@חוקר יש לי תוכנית מסובכת לומר לך מה לעשות,
ואז אני נזכר שאני אישית משתמש בAPI של גוגל כאני צריך כאלה דברים.
זה ממש פשוט, והרבה יותר מדוייק
https://maps.googleapis.com/maps/api/geocode/json?key=XXXXXX&language=he&result_type=street_address&address=הרצל 17
התוצאה נראית ככה:
{
"results" : [
{
"address_components" : [
{
"long_name" : "17",
"short_name" : "17",
"types" : [ "street_number" ]
},
{
"long_name" : "הרצל",
"short_name" : "הרצל",
"types" : [ "route" ]
},
{
"long_name" : "תל אביב-יפו",
"short_name" : "תל אביב-יפו",
"types" : [ "locality", "political" ]
},
{
"long_name" : "מחוז תל אביב",
"short_name" : "מחוז תל אביב",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "ישראל",
"short_name" : "IL",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "הרצל 17, תל אביב-יפו, ישראל",
"geometry" : {
"location" : {
"lat" : 32.0616741,
"lng" : 34.7703751
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 32.06301403029149,
"lng" : 34.7716624802915
},
"southwest" : {
"lat" : 32.0603160697085,
"lng" : 34.7689645197085
}
}
},
"place_id" : "ChIJv09_XJxMHRURWh4zBRBM2y0",
"plus_code" : {
"compound_code" : "3Q6C+M5 תל אביב-יפו, ישראל",
"global_code" : "8G4P3Q6C+M5"
},
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
אם אתה מתעקש על אלגוריתם,
אני מניח שכל הערים נמצאות בקצה המחרוזת.
אתה צריך לטעון את כל הערים למערך, ולבדוק עם endsWith אם המחרוזת מסיימת בטקסט הרצוי. אם יש רק תוצאה חיובית אחת זו העיר, אם יש יותר מאחת, צריך לעבור לבדוק אם הרחוב קיים שם וזה על ידי רג'קס שמוריד כל מספר וסימן אחורה, עד הטקסט הקודם ואז לולאה על הרחובות המתאימים לאותה העיר. בקיצור זה לא עבודה נחמדה.

, אבקש
, אל תתמקדו אחד בדבריו של השני, אלא בעובדות הרלוונטיות לשאלת פותח האשכול.