الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن معرفة موقع الحرف في الكلمة ؟

بدأه Lamyaa في 11 يناير 2018 · 1 رد · 661 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أسعد الله أيامكم بكل خير

 

مؤخراً كنت مضطرة لاستخدام اللغة العربية في برانامج لا يدعم اللغة العربية (ليس قلبا للمحارف العربية إنما إظهار محارف ورموز مجهولة أو علامات استفهام) وقد استخدمت برنامج الوسيط وبرنامج أو رشيد، ولكن واجهتني مشاكل في هذه الخطوط فهناك بعض المحارف المهمة لية موجودة في تلك الخطوط المستخدمة في برنامج الوسيط أو أبو رشيد أو الرسام.

 

بحثت في الموضوع قليلا محاولة إيجاد حلول تنفع الكتابة بالعربية في البرامج التي لا تدعمها، فتحت أحد الخطوط المستخدمة في تلك البرامج فوجدت أن كل برنامج منها يستخدم خارطة محارف خاصة به والبرانامج الوسيط يقوم يتوليد أحرف أو رموز تشير إلى موقع الحرف في تلك الخريطة من المحارف.

 

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

 

السؤال الآن بعد المقدمة المملة والطويلة ..

كيف يمكن معرفة موقع الحرف في الكلمة ؟

لنفرض أن لدينا جملة (زهرة الحياة)

كيف استخلص برمجيا أن حرف (ز) في كلمة زهرة جاء في أول الكلمة وان حرف (هـ) جاء وسط الكلمة دون اتصال مع ما يسبقه وأن حرف (ـر) جاء متصلا مع ما قبله وأن (ة) غير متصله مع ما قبلها .. وهكذا؟

 

هل هذا ممكن بلغة C# ؟

 

ولكم خالص الشكر والتقدير

post-252239-064955400%201356690312.gif
#2

وأنا أبحث في الموضوع وجدت هذا الكود ولكن بلغة php

ولا أعلم إن كان يفيد في الفكرة

<?php
/**
 * word2uni
 * This code is a part of aCAPTCHA project, This copyright notice MUST stay intact for use
 * @package aCAPTCHA 
 * @author Abd Allatif Eymsh
 * @copyright (c) 2012
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 */
function word2uni($word)
{

	$new_word = array();
	$char_type = array();
	$isolated_chars = array('ا', 'د', 'ذ', 'أ', 'آ', 'ر', 'ؤ', 'ء', 'ز', 'و', 'ى', 'ة');

	$all_chars = array
		(
			'ا' => array(

				'middle'		=>   'ﺎ',

				'isolated'		=>   'ﺍ'
				),

			'ؤ' => array(

				'middle'		=>   'ﺅ',

				'isolated'		=>   'ﺆ'
				),
			'ء' => array(
				'middle'		=>   'ﺀ',
				'isolated'		=>   'ﺀ'
				),
			'أ' => array(

				'middle'		=>   'ﺄ',

				'isolated'		=>   'ﺃ'
				),
			'آ' => array(

				'middle'		=>   'ﺂ',

				'isolated'		=>   'ﺁ'
				),
			'ى' => array(

				'middle'		=>   'ﻰ',

				'isolated'		=>   'ﻯ'
				),
			'ب' => array(
				'beginning'		=>   'ﺑ',
				'middle'		=>   'ﺒ',
				'end'			=>   'ﺐ',
				'isolated'		=>   'ﺏ'
				),
			'ت' => array(
				'beginning'		=>   'ﺗ',
				'middle'		=>   'ﺘ',
				'end'			=>   'ﺖ',
				'isolated'		=>   'ﺕ'
				),
			'ث' => array(
				'beginning'		=>   'ﺛ',
				'middle'		=>   'ﺜ',
				'end'			=>   'ﺚ',
				'isolated'		=>   'ﺙ'
				),
			'ج' => array(
				'beginning'		=>   'ﺟ',
				'middle'		=>   'ﺠ',
				'end'			=>   'ﺞ',
				'isolated'		=>   'ﺝ'
				),
			'ح' => array(
				'beginning'		=>   'ﺣ',
				'middle'		=>   'ﺤ',
				'end'			=>   'ﺢ',
				'isolated'		=>   'ﺡ'
				),
			'خ' => array(
				'beginning'		=>   'ﺧ',
				'middle'		=>   'ﺨ',
				'end'			=>   'ﺦ',
				'isolated'		=>   'ﺥ'
				),
			'د' => array(
				'middle'		=>   'ﺪ',
				'isolated'		=>   'ﺩ'
				),
			'ذ' => array(
				'middle'		=>   'ﺬ',
				'isolated'		=>   'ﺫ'
				),
			'ر' => array(
				'middle'		=>   'ﺮ',
				'isolated'		=>   'ﺭ'
				),
			'ز' => array(
				'middle'		=>   'ﺰ',
				'isolated'		=>   'ﺯ'
				),
			'س' => array(
				'beginning'		=>   'ﺳ',
				'middle'		=>   'ﺴ',
				'end'			=>   'ﺲ',
				'isolated'		=>   'ﺱ'
				),
			'ش' => array(
				'beginning'		=>   'ﺷ',
				'middle'		=>   'ﺸ',
				'end'			=>   'ﺶ',
				'isolated'		=>   'ﺵ'
				),
			'ص' => array(
				'beginning'		=>   'ﺻ',
				'middle'		=>   'ﺼ',
				'end'			=>   'ﺺ',
				'isolated'		=>   'ﺹ'
				),
			'ض' => array(
				'beginning'		=>   'ﺿ',
				'middle'		=>   'ﻀ',
				'end'			=>   'ﺾ',
				'isolated'		=>   'ﺽ'
				),
			'ط' => array(
				'beginning'		=>   'ﻃ',
				'middle'		=>   'ﻄ',
				'end'			=>   'ﻂ',
				'isolated'		=>   'ﻁ'
				),
			'ظ' => array(
				'beginning'		=>   'ﻇ',
				'middle'		=>   'ﻈ',
				'end'			=>   'ﻆ',
				'isolated'		=>   'ﻅ'
				),
			'ع' => array(
				'beginning'		=>   'ﻋ',
				'middle'		=>   'ﻌ',
				'end'			=>   'ﻊ',
				'isolated'		=>   'ﻉ'
				),
			'غ' => array(
				'beginning'		=>   'ﻏ',
				'middle'		=>   'ﻐ',
				'end'			=>   'ﻎ',
				'isolated'		=>   'ﻍ'
				),
			'ف' => array(
				'beginning'		=>   'ﻓ',
				'middle'		=>   'ﻔ',
				'end'			=>   'ﻒ',
				'isolated'		=>   'ﻑ'
				),
			'ق' => array(
				'beginning'		=>   'ﻗ',
				'middle'		=>   'ﻘ',
				'end'			=>   'ﻖ',
				'isolated'		=>   'ﻕ'
				),
			'ك' => array(
				'beginning'		=>   'ﻛ',
				'middle'		=>   'ﻜ',
				'end'			=>   'ﻚ',
				'isolated'		=>   'ﻙ'
				),
			'ل' => array(
				'beginning'		=>   'ﻟ',
				'middle'		=>   'ﻠ',
				'end'			=>   'ﻞ',
				'isolated'		=>   'ﻝ'
				),
			'م' => array(
				'beginning'		=>   'ﻣ',
				'middle'		=>   'ﻤ',
				'end'			=>   'ﻢ',
				'isolated'		=>   'ﻡ'
				),
			'ن' => array(
				'beginning'		=>   'ﻧ',
				'middle'		=>   'ﻨ',
				'end'			=>   'ﻦ',
				'isolated'		=>   'ﻥ'
				),
			'ه' => array(
				'beginning'		=>   'ﻫ',
				'middle'		=>   'ﻬ',
				'end'			=>   'ﻪ',
				'isolated'		=>   'ﻩ'
				),
			'و' => array(
				'middle'		=>   'ﻮ',
				'isolated'		=>   'ﻭ'
				),
			'ي' => array(
				'beginning'		=>   'ﻳ',
				'middle'		=>   'ﻴ',
				'end'			=>   'ﻲ',
				'isolated'		=>   'ﻱ'
				),
			'ئ' => array(
				'beginning'		=>   'ﺋ',
				'middle'		=>   'ﺌ',
				'end'			=>   'ﺊ',
				'isolated'		=>   'ﺉ'
				),
			'ة' => array(
				'middle'		=>   'ﺔ',
				'isolated'		=>   'ﺓ'
				)
		);

	if(in_array($word[0].$word[1], $isolated_chars))
	{
		$new_word[] = $all_chars[$word[0].$word[1]]['isolated'];
		$char_type[] = 'not_normal';
	}
	else
	{
		$new_word[] = $all_chars[$word[0].$word[1]]['beginning'];
		$char_type[] = 'normal';
	}

	if(strlen($word) > 4)
	{
		if($char_type[0] == 'not_normal')

		{
			if(in_array($word[2].$word[3], $isolated_chars))
			{
				$new_word[] = $all_chars[$word[2].$word[3]]['isolated'];
				$char_type[] = 'not_normal';
			}
			else
			{

				$new_word[] = $all_chars[$word[2].$word[3]]['beginning'];
				$char_type[] = 'normal';
			}
		}
		else
		{
			$new_word[] = $all_chars[$word[2].$word[3]]['middle'];
			$chars_statue[] = 'middle';

			if(in_array($word[2].$word[3], $isolated_chars))
			{
				$char_type[] = 'not_normal';
			}
			else
			{
				$char_type[] = 'normal';
			}
		}
		$x = 4;
	}
	else
	{
		$x = 2;	
	}

	for($x=4;$x< (strlen($word)-4) ;$x++)
	{
		if($char_type[count($char_type)-1] == 'not_normal' AND $x %2 == 0)
		{
			if(in_array($word[$x].$word[$x+1], $isolated_chars))
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
				$char_type[] = 'not_normal';
			}
			else
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['beginning'];
				$char_type[] = 'normal';
			}
		}
		elseif($char_type[count($char_type)-1] == 'normal' AND $x %2 == 0)
		{

			if(in_array($word[$x].$word[$x+1], $isolated_chars))
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
				$char_type[] = 'not_normal';
			}
			else
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
				$char_type[] = 'normal';
			}
		}

	}
	if(strlen($word)>6)
	{
		if($char_type[count($char_type)-1] == 'not_normal')
		{
			if(in_array($word[$x].$word[$x+1], $isolated_chars))
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
				$char_type[] = 'not_normal';
			}
			else
			{

				if($word[strlen($word)-2].$word[strlen($word)-1] == 'ء')
				{
					$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
					$char_type[] = 'normal';
				}
				else
				{
					$new_word[] = $all_chars[$word[$x].$word[$x+1]]['beginning'];
					$char_type[] = 'normal';
				}

			}

			$x += 2;
		}
		elseif($char_type[count($char_type)-1] == 'normal')
		{

			if(in_array($word[$x].$word[$x+1], $isolated_chars))
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
				$char_type[] = 'not_normal';
			}
			else
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
				$char_type[] = 'normal';
			}

			$x += 2;
		}


	}

	if($char_type[count($char_type)-1] == 'not_normal')
	{

		if(in_array($word[$x].$word[$x+1], $isolated_chars))
		{		

			$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];

		}
		else
		{
			$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];

		}

	}
	else
	{
		if(in_array($word[$x].$word[$x+1], $isolated_chars))
		{

			$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];

		}
		else
		{

			$new_word[] = $all_chars[$word[$x].$word[$x+1]]['end'];

		}
	}

	return implode('',array_reverse($new_word));
}
?>
post-252239-064955400%201356690312.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…