צפיות
תשובות
פונקציה שבודקת אם המחרוזת היא מספר
לאחר תסבוכים רבים עם פונקציית ה- isnumeric המקורית, החלטתי לבנות מחדש את אותה פונקציה לפי צרכי.
הפונקציה שבניתי היא:
function isnumeric(val)
if val="" or isempty(val) or isnull(val) then
isnumeric=false
else
dim newval
newval=true
dim i
dim char
for i=1 to len(val)
char=mid(val,i,1)
if char<>"0" and char<>"1" and char<>"2" and char<>"3" and char<>"4" and char<>"5" and char<>"6" and char<>"7" and char<>"8" and char<>"9" then
newval=false
exit for
end if
next
isnumeric=newval
end if
end function
הפונקציה בודקת שכל אחד ואחד מהתווים במחזורת זו ספרה בין 0 ל- 9.
הפונקציה לא מתחשבת במספרים שליליים ועשרוניים.
אשמח לקבל הצעות לשיפור וייעול.
13 תשובות
לא יותר פשוט לרשום…
if char<"0" or char>"9" then
למה? – אפשר לקצר את זה הרבה..
למה לא RegExp כזה? :
function fCheckIsNumber(strNumber){
return /^[0-9]+$/.test(strNumber);
}
גם יותר מהיר, גם יותר יעיל
בגלל שזה VBS ולא JS
זה JS צד לקוח מה שנתתי לך
יהיה הרבה יותר יעיל לבדוק ככה.
מה גם שיש RegExpים ב VBS, זה אומנם לא יעיל אבל בהחלט קיים!
ואם אפשר לשאול, מה הייתה בפונקציה isnumeric?
לא יצא לי לפגוש RegExpים ב- VBS
ואני צריך VBS צד שרת.
אני בודק אם ה- ID שהועבר ב- QUERYSTRING הוא מספר שלם חיובי.
אז מה רע ב cint?
הסבר למה לא cint
cint מקבל ביטוי וממיר אותו לסוג מספר.
אם הביטוי לא יכול להיות מספר אז יש שגיאה, ואני לא רוצה שתהיה שגיאה.
לכן אני קודם בודק אם הביטוי יכול להיות מספר.
כיוון שפונקציית ה- isnumeric מחזירה אמת גם במקרה של מספרים שליליים ועשרוניים החלטתי לבנות פונקצית isnumeric מותאמת אישית לצרכים שלי.
גם לי יש בעיה כזאת
בקשר ל CINT איך אני יכול לתפוס את השגיאה ולא להציג אותה כלומר להציג משהו אחר במקומה ?
תעשו כך:
dim isNum
isNum = Request("qs")
if cInt(isNum) then
true
else
false
End If
במקום של true ו-false שנו לקוד שלכם
המממ… לא משהו
function fIsNumeric(num)
if not isnumeric(num) then
fIsNumeric = false
else
fIsNumeric = cint(num)>=0 and instr(num,".")=0
end if
end function
x="1235"
Response.write(fIsNumeric(x))
לא!
אי אפשר להשתמש באופרטורים כדוגמאת <,>,>=,<= על טקסטים
שיהיה
אני לא מבין ב- VBS, זה היה ניסיון לעזור… בכל מקרה הוא כבר קיבל מספיק עזרה
זה לא רק ב-VBS זה בכל שפת תכנות (יש שפה שעושה אחרת?!)