שלח תשובה

זירת השאלות

577
צפיות
10
תשובות

איך אני בודק אם ערך שמשתמש הכניס..

,‏ 17 בינואר, 2005

הוא מסוג int?
try — catch נראה לי הכי פשוט, אבל אני לא מכיר את הפונקציה שעושה cast מ string (הערך בטקסט בוקס) לint.

תגיות:

10 תשובות

  1. ניר טייב הגיב:

    מממ…
    כדי להפוך מ-string ל-Int יש להכפיל ב-1 או לחסר ב-0.
    אתה רק צריך לבדוק האם הקלט הוא באמת מספר וזאת עושים ע"י isNaN  שבודק האם הקלט הוא מספר או יוניקוד/ASCII של מספר.

    מידע יש ב-FAQ ובמאמרים.

  2. ניר טייב הגיב:

    בקשר ל-isNaN אז איני בטוח שהוא בודק
    גם ע"פ ASCII/יוניקוד. כי ראיתי שדגון (נראה לי) בפורום ASP בתפוז כתב על זה משהו אבל לא מצאתי את זה ב-FAQ :-/

    אבל הנה RegExp שעושה את העבודה
    /^[+-]?d+(.d+)?(e[+-]d+)?$/

    הוא בודק מספרים שמופיעים עם נקודה עשרונית (או בלעדיה) ואם אקספוננט (E)

  3. Sag הגיב:

    חובבנים! כנס לראות את התשובה 🙂
    אני מניח שאתה מדבר על VBscript ולא JavaScript,


    <%
    ' נניח שאתה מקבל ערך מטופס
    myInput = Request.QueryString("myField")

    ' נניח שאתה רוצה לבדוק אם הערך הזה הוא 1.

    ' לא תוכל לעשות כך:
    If myInput = 1 then
        
    End if
    ' לא תוכל לעשות כך מפני שהקוד לא יודע אם הערך הוא מספרי, ולכן כל עוד אתה לא ממיר את הערך למספר התוצאה של השאילתה הזאת תיהיה תמיד שקר

    ' ולכן תצתרך להמיר את הערך למספר לפני השאילתה. כך:
    myInput = Int(myInput)
    ' או מיד בשאילתה:
    If Int(myInput) = 1
    End If

    ' אבל, כאן נוצרת בעיה נוספת, כי אם הערך שהתקבל הוא לא מספר תקבל שגיאה בזמן ההרצה של הקוד.
    ' אז אתה מוכרח לבדוק האם הערך הוא מספרי ורק אם כן אז תמיר אותו למספר.
    ' IsNumeric היא הפונקציה ששואלת האם הערך הוא מספר
    ' זה מתבצעה כך:

    If IsNumeric(myInput) Then ' אם התקבל מספר
           If Int(myInput) = 1 Then
                  response.write "The input is 1 !!"
          Else
                  response.write "The input is NOT 1 !!"
          End If
    Else
          response.write "The input is not a number!"
    End If
    %>

    אני מניח שמה שאתה חיפשת היא הפונקציה:
    IsNumeric()

    מקווה שתצליח, לעוד בעיות חזור לאשכול זה

  4. ניר טייב הגיב:

    רק מההודעה שלו היה אפשר להבין שהוא
    מתכוון ל-JS למרות שהוא לא ציין זאת. וגם זה פורום צד לקוח אז עוד סיבה למה זה JS.
    הקוד שלך יעבוד אך ורק בצד שרת אלא אם תשנה אותו לכך שהוא יעבוד עם DOM ורק אז הוא יעבוד רק על IE.

    ולקרוא למישהו שאתה לא מכיר חובבן זו התנשאות (שלפעמים היא גם לא נכונה).

    וגם תמיד אפשר לעשות isNumeric טאז לעשות cInt


    <script type="text/vbscript">
    <!– <[CDATA[

    sub numConv(byRef input)
    if isNumeric(input) then
    input = cInt(input)
    else
    msgbox(input+": Not a Number")
    end if
    end sub

    dim inputer : inputer="1"
    numConv(inputer)
    inputer = "xxx"
    numConv(inputer)

    " ]]> –>
    </script>

    לא נבדק אבל אני מניח שזה יעבוד

  5. בקשר לפונקציות Cint, IsNumeric
    בקשר לisNumeric וCint  , הם פונקציות גם של js?(חיפשתי אותם בrefference של js ב-msdn ולא מצאתי)
    איפה אתם מחפשים פונקציות כשצריך?

  6. ניר טייב הגיב:

    זה VBS
    אני בד"כ מחפש ב-devguru  כאשר מדובר בפונקציות של JS.
    http://www.devguru.com

    ה-MSDN זה גם מקום טוב. אבל בשביל הפונקציה הקטנה הזו אני לא מוכן לחפש שם שעה |חבול|

  7. זהר פלד הגיב:

    אני דוקא משתמש ב MSDN…
    בדרך כלל אני יודע כבר מה אני מחפש, רק לא זוכר בדיוק איך זה הולך…
    אז אני גם יודע איפה לחפש.

    חוצמזה, מכיון ש JS היא שפה מונחת אובייקטים, אפשר לבצע ניחוש מושכל לאיזה אובייקט תהיה שייכת איזה מתודה…

  8. ניר טייב הגיב:

    כן…
    ולכן אף יותר קל למצוא את המתודה שמחפשים ב-devguru
    זה כבר מסודר לך שם לפי object, methos, properties מה שרק צריך

שלח תשובה