Mohammad YahiaMohammad Yahia
Back to all articles

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

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


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

خلال عملي في برنامج المكتبة الإسلامية للأندرويد أردت أن أظهر في معلومات الكتاب ترشيحات لكتب أخرى لنفس المؤلف فأردت أن أظهر عبارة “كتب أخرى لفلان”.

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

شرح الموضوع

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

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

ظاهرٌ أن لام الاسم الواقع بعد لام الجر يجر بها ولأن أسماء المؤلفين عندنا أغلبها غير مشكل، فسنراعي من الأسماء ما يعرب بالحروف لا ما يعرب بالحركات.

والذي راعيته هو كلمة “أبو” فقط لأنها ترد كثيرًا في كنى المؤلفين.

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

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

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

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

أمثلة

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

الكود

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("ال");
}

المراجع