[نشاط] كتابة دوال لمعرفة عدد الكلمات في متغير نصــي

السلام عليكم يا عرب .

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

كل واحد يكتب ذلك باللغة التي يتقنها او التي يبرمج بها ,

من ناحيتي ساكتبها بلغة oracle pl/sql

Create or Replace Function 
    WordCount (v_InpStr In Varchar2)
    Return Pls_Integer
As
    v_WordCnt Pls_Integer := 0;
    v_StrLen  Pls_Integer := Nvl(Length(v_InpStr),0);
     In_A_Word Boolean;
Begin
    For v_Ctr in 1..v_StrLen + 1 Loop
        If Substr(v_InpStr, v_Ctr, 1) = ' ' or v_Ctr > v_StrLen Then
            If In_A_Word Then
                v_WordCnt := v_WordCnt +1 ;
                In_A_Word := False;
            End If;
        Else
        In_A_Word := True;
        End If;
    End Loop;
Return v_WordCnt;
End;

ولاستخدام هذا الدوال نقوم بالتالــي : SELECT WordCount ('hello arabia IO people') INTO ONE_KEY FROM DUAL;

شاركنا :)


بإستخدام javascript:

function wordsCount (){
    var string = "this is a sample string for example";
    var words = string.split(" ");
    var length = words.length;
    return length;
}
wordsCount();

لو استخدمت الريجيكس (regex) لكان أفضل لتتفادى احتساب مسافتين بكلمة:

function wordsCount (){

var string = "this    is a sample string for example";
var words = string.match(/\S+/g).length;
var length = words.length;
return words;

}

wordsCount();

إعتقدت انه يعيد لي 6 لانه حسب فهمي للكود فهو يعد المسافات ولكن بعد تطبيقه اعاد 7 :)

ولكن لو كان النص

string = "this is a sample string for example  ";

( اضافة فراغين )

سيرجع قيمة 9 .