دخول حروف الجر على الأسماء برمجيا

في التغيرات النحوية والصرفية

Posted by Mohammad Yahia on Tuesday, July 18, 2017 Tags: Arabic_NLP   2 minute read

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

خلال اعملي في برنامج المكتبة الإسلامية للأندرويد أردت أن أظهر في معلومات الكتاب ترشيحات لكتب أخرى لنفس المؤلف فأردت أن أظهر عبارة “كتب أخرى لفلان” الآن حتى تظهر مثل هذه العبارة نحويا بشكل صحيح نحتاج إلى مراعاة دخول لام الجر على الأسماء فكتبت دالة برمجية صغيرة للمساعدة على ذلك

Explanation

دخول لام الجر على الأسماء يستلزم تغييرات نحوية (في آخر الكلمة وتغيرات صرفية (في بنية الكلمة))

التغيرات النحوية

ظاهرٌ أن لام الاسم الواقع بعد لام الجر يجر بها ولأن الاأسماء المؤلفين عندنا أغلبها غير مشكل فسنراعي من الأسماء ما يعرب بالحروف لا ما يعرب بالحركات والذي راعيته هوكلمة أبو فقط لأنها ترد كثيرًا في كنى المؤلفين

التغيرات الصرفية

لدخول لام الجر على الأسماء بعض الأحكام الصرفية

قال الشيخ عبد السلام هارون :

  • تُنْقَصُ أَلِفُ (أَلْ) إِذَا دَخَلَ عَلَيْهَا اللّاَمُ، نَحْوُ: إِنَّهُ لَلْحَقُّ، لَلْعَمَلُ الصَّالِحُ أَبْقَى، يا لَلرِّجَالِ، لِلَّذِي، لِلَّذَينَ.
  • تُحْذَفُ (أَلْ) إِذَا وَقَعَتْ بَعْدَ لاَمٍ وَكَانَ بَعْدَهَا لاَمٌ نَحْوُ: أَصْغَيْتُ لِلَّحْنِ الْجَمِيلِ، لَلَّحنُ الْجَمِيلُ غِذَاءٌ لِلرُّوحِ.

أمثلة

  • أبو الوفاء ابن عقيل -> لأبي الوفاء بن عقيل
  • الرامهرمزي -> للرامهرمزي
  • اللالكائي -> للالكائي

Code

  public static String prepareForPrefixingLam(String string) {

      if (startsWithDefiniteArticle(string)) {
          if (string.startsWith("ل", 2)) {
              return string.substring(2);
          } else {
              return string.substring(1);
          }
      } else if (string.startsWith("أبو") || string.startsWith("ابو")) {
          return string.replaceFirst("و", "ي");
      } else {
          return string;
      }
    }

  public static boolean startsWithDefiniteArticle(String string) {
      return string.startsWith("ال");
  }

Sources