كيفية استخراج سلسلة فرعية قبل حرف محدد في جافاسكريبت؟
أحاول استخراج كل شيء قبل الفاصلة ','، كيف يمكنني فعل ذلك في JavaScript أو jQuery؟ لقد جربت هذا ولم يعمل..
1345 albany street, Bellevue WA 42344
أريد فقط الحصول على عنوان الشارع.
var streetaddress= substr(addy, 0, index(addy, '.'));
الإجابة رقم 1
const streetAddress = addy.substring(0, addy.indexOf(","));
بينما ليس المكان الأفضل للحصول على معلومات نهائية حول ما يفعله كل أسلوب (وثائق MDN Web أفضل لذلك)، فإن موقع W3Schools.com جيد لتعريفك بالصياغة.
الإجابة رقم 2
var streetaddress = addy.split(',')[0];
الإجابة رقم 3
جرب هذا:
streetaddress.substring(0, streetaddress.indexOf(','));
الإجابة رقم 4
//split string into an array and grab the first item
var streetaddress = addy.split(',')[0];
أيضًا، أوصي بتسمية متغيراتك باستخدام نمط الجمل الجملية (streetAddress) لتحسين قابلية القراءة.
الإجابة رقم 5
إذا أعجبك الأمر بشكل مختصر استخدم فقط تعبيرًا نمطيًا:
var streetAddress = /[^,]*/.exec(addy)[0];
الإجابة رقم 6
يمكنك أيضًا استخدام shift().
var streetaddress = addy.split(',').shift();
وفقًا لوثائق MDN Web:
تقوم الطريقة
shift()بإزالة العنصر الأول من المصفوفة وتعيد هذا العنصر الذي تمت إزالته. هذه الطريقة تغير طول المصفوفة.
https://developer.mozilla.org/ar/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
الإجابة رقم 7
تقريبًا نفس الشيء الذي أجاب به ديفيد ج، ولكن بدون الدالة المجهولة، إذا لم تشعر بالرغبة في تضمين واحدة.
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
في هذه الحالة نستخدم حقيقة أن الوسيط الثاني لـ substr هو طول، وأننا نعلم أن السلسلة الفرعية الخاصة بنا تبدأ من 0.
الإجابة الأعلى ليست حلاً عاماً بسبب السلوك غير المرغوب فيه إذا لم تحتوي السلسلة على الحرف الذي تبحث عنه.
إذا أردت السلوك الصحيح في حالة عامة، استخدم هذه الطريقة أو طريقة ديفيد ج، وليس الإجابة الأعلى تصويتًا
ستعمل طرق regex و split أيضًا، لكنها قد تكون أبطأ بعض الشيء/مبالغة لهذه المشكلة المحددة.
