إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

عدد الكلمات في متغير

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • عدد الكلمات في متغير

    السلام عليكم

    ما الطريقة التي تراها أخي الكريم في حساب
    عدد الكلمات في متغير Input أو RichText .....
    نرجو وضع أكواد إن توفرت كفيلة بحساب ما طرح
    سلام

  • #2
    مرحبا بكم من جديد بعد عودة الإنترنت لى


    إذا كنت تقصد عدد كلمات يتم الحصول عليها من إينبوت أو غيرة فبالتأكيد أنت تعرف أن الناتج سيكون نصى "String"

    وبالتالى يمكنك إستخدام تحويل النص إلى مصفوفة ووضع البارامتر هو الفراغ "مسافة"

    [html]--
    function StringDelimitedToTable(DelimitedString, Delimiter)
    tbReturn = {};
    local strWorking;
    local nPos = nil;
    local strData;
    local nTableIndex = 1;
    local nDelimiterLength = String.Length(Delimiter);
    if(nDelimiterLength < 1)then
    tbReturn[nTableIndex] = DelimitedString;
    return tbReturn;
    end
    strWorking = DelimitedString;
    nPos = String.Find(strWorking,Delimiter);
    while(nPos ~= -1)do
    strData = String.Left(strWorking,nPos-1);
    tbReturn[nTableIndex] = strData;
    nTableIndex = nTableIndex + 1;
    local nLength = String.Length(strWorking);
    strWorking = String.Right(strWorking,nLength - (nPos + (nDelimiterLength-1)));
    nPos = String.Find(strWorking,Delimiter);
    end
    if(strWorking ~= "")then
    tbReturn[nTableIndex] = strWorking;
    end
    return tbReturn;
    end[/html]

    مع الوضع فى الإعتبار أن كلمة "DelimitedString" الموجودة فى الوظيفة هى النص المراد
    وكلمة "Delimiter" هى الباراميتر والذى سوف تكتبة فى هذة الحالة مسافة فارغة

    وسيكون الريترن للدالة السابقة هو جدول فيمكنك عد الكلمات بـــ تيبل كونت .

    وطبعا للتوضيح للمبتدئين فإن الريتيرن سوف يخزن فى المتغير الذى تستعملة مع الدالة أو مع الدالة نفسها فى حالة عدم كتابة متغير لها .


    بالتوفيق

    تعليق


    • #3
      السلام عليكم
      في البداية شكرا جزيلا و لا أخفيك لم أستطع تطبيق ما ذكرت
      لكن و لتبادل المعلومات سأقرأ لك هذا الحل :
      في global function
      كود:
      function string.wordcount(t)
          local t = t:gsub("^%s*(.-)%s*$", "%1");
          local intWordCount = 0;
          local intIndex = 1;
          while intIndex <= String.Length(t) do
              local strChar = String.Mid(t, intIndex, 1);
                  if intIndex == 1 then
                      strPrevChar = ' '
                  else
                      strPrevChar = String.Mid(t, intIndex-1, 1);
                  end
                  if strPrevChar == ' ' and strChar ~= ' ' then
                      intWordCount = intWordCount + 1;
                  end
              intIndex = intIndex + 1;
          end
          return intWordCount
      end
      خذ أنبوت و أكتب فيه كلمات
      لتحصل على النتائج وفق :
      كود:
      t =  Input.GetText("Input1");
       Dialog.Message("Notice", string.wordcount(t));
      استفدت فأرجو أني أفدت
      شكرا

      تعليق


      • #4
        كود إحترافى ............ شكرا

        تعليق


        • #5
          شكرا أخي عبود
          أطالع الان في الاكواد التي تعتمد على المصفوفات لتفس الغرض
          فأعجبني هذا قلت ارفعه قد نحتاجه يوما

          في global function
          كود:
          function string:explode(szDivider)
          	if(Divider=="")then
          		return {self};
          	end
          	local intPosition = 0;
          	local arrResult   = {};
          	local function FindAll()
          		return string.find(self,szDivider,intPosition,true);
          	end
          	for st,sp in FindAll do
          		arrResult[#arrResult+1]=string.sub(self,intPosition,st-1);
          		intPosition = sp+1;
          	end
          	arrResult[#arrResult+1]=string.sub(self,intPosition);
          	return arrResult;
          end
          و لعملية حساب المفردات مثلا من أنبوت :

          كود:
          szString = Input.GetText("Input1");
          tblFinalResult = szString:explode(" "); 
          if(tblFinalResult)then
            for k, word in pairs(tblFinalResult)do
            Table.Concat(tblFinalResult, ";", word, TABLE_ALL);
            end
          end
          result = Table.Count(tblFinalResult);
          Dialog.Message("Notice",result);

          تقديري

          تعليق


          • #6
            الكود السابق أفضل نظرا لأن الكود الأخير سوف يحتاج مجموعة شروط أو بعض الضبط كى لا يحتسب وجود مسافة فارغة على أنها كلمة إذا تم وضع المسافة الفارغة فى أول النص بمعنى حاول تجربة وضع مجموعة كلمات ووضع مسافة قبل الكلمة الأولى هههههههه عذرا فأنا أشجع الدقة لذلك علقت بكلمة كود إحترافى بالنسبة للكود السابق

            تعليق


            • #7
              مشكووور و فعلا اعتمدت الكود الأول

              و على ذكر المسافات و طبعا خارج عن مجال تغطية الموضوع إليك
              بكود يهمل المسافات بين الكلمات سأخبأه هناااا

              كود:
              Dialog.Message("Notice", string.gsub("أحمد سمير   يوسف زكي", "%s", "") );
              تقديري

              تعليق


              • #8
                تمام شكرا ........... جميل هذا الكود

                تعليق


                • #9

                  هل من حلول أكثر احترافية ودقة ؟؟

                  تعليق

                  مواضيع تهمك

                  تقليص

                  المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                  المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                  المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                  المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                  المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                  يعمل...
                  X