سؤال

أريد تقسيم سلسلة يمكن أن تبدو مثل هذا: Word1؛ Word2؛ Word3 و Word4 و Word5 و Word6.word7. إلخ.

السلسلة من إخراج أحصل عليها من صفحة PHP التي تجمع البيانات من قاعدة بيانات، لذلك قد تبدو السلسلة مختلفة ولكن الكلمات الأولى مفصولة دائما؛ وبعد ذلك، والكلمات الأخيرة مع. (DOT)

أريد أن أكون قادرا على جلب كل الكلمات التي تنتهي مع مثال؛ ، أو . في صفيف. هل يعرف شخص ما كيفية القيام بذلك؟

أود أيضا أن أعرف كيفية جلب الكلمات التي تنتهي فقط؛

تعمل الوظيفة ends_with (السلسلة، الشخصية) أدناه، لكنها لا تتخذ أي اعتبار لبرنامج Whitespace. على سبيل المثال، إذا كانت الكلمة هي الرمال Jonas، فهي تطبع فقط الرمل. أي شخص يعرف كيفية إصلاح هذا؟

هل كانت مفيدة؟

المحلول

المحتمل

var string = "word1;word2;word3,word4,word5,word6.word7";
var array = string.split(/[;,.]/);
// array = ["word1", "word2", "word3", "word4", "word5", "word6", "word7"]

المفتاح هو في التعبير المنتظم مرت إلى String#split طريقة. مشغل فئة الشخصية [] يسمح التعبير العادي بالتحديد بين الشخصيات الموجودة معها.

إذا كنت بحاجة إلى تقسيم على سلسلة تحتوي على أكثر من حرف واحد، يمكنك استخدام | للتفريق.

var array = string.split(/;|,|./) // same as above

يحرر: لم تقرأ سؤال دقيق. شيء من هذا القبيل

var string = "word1;word2;word3,word4,word5,word6.word7";

function ends_with(string, character) {
  var regexp = new RegExp('\\w+' + character, 'g');
  var matches = string.match(regexp);
  var replacer = new RegExp(character + '$');
  return matches.map(function(ee) {
    return ee.replace(replacer, '');
  });
}
// ends_with(string, ';') => ["word1", "word2"]

نصائح أخرى

var myString = word1;word2;word3,word4,word5,word6.word7;
var result = myString.split(/;|,|./);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top