נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: string validation in C sharp

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
igalep132
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 18 December 2007
משתמש: מנותק/ת
הודעות: 13
נשלח בתאריך: 21 December 2007 בשעה 01:20 | IP רשוּם
ציטוט igalep132

שלום,

רציתי לדעת איך אני יכול לבדוק האם הקלט שלי הוא string טהור (הכוונה לאותיות ולא לספרות).
אני צריך לקבל שם פרטי בtextBox ורוצה לבדוק תקינות קלט

תודה מראש
חזרה לתחילת העמוד הצג את כרטיס החבר של igalep132 חפש הודעות אחרות של igalep132
 
טל
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 21 December 2007 בשעה 12:55 | IP רשוּם
ציטוט טל

אתה מעוניין לא לאפשר למשתמש לכתוב אותיות וסימנים ב-TEXTBOX, או לבדוק אם המחרוזת שהוא כבר הקליד מכילה מספרים או סימנים?

חזרה לתחילת העמוד הצג את כרטיס החבר של טל חפש הודעות אחרות של טל בקר בדף הבית של טל
 
igalep132
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 18 December 2007
משתמש: מנותק/ת
הודעות: 13
נשלח בתאריך: 21 December 2007 בשעה 12:58 | IP רשוּם
ציטוט igalep132

" לבדוק אם המחרוזת שהוא כבר הקליד מכילה מספרים או סימנים "
ולא לאפשר לו להכניס אותם
חזרה לתחילת העמוד הצג את כרטיס החבר של igalep132 חפש הודעות אחרות של igalep132
 
talikag
משתמש מתחיל
משתמש מתחיל
סמל אישי

הצטרף / הצטרפה: 21 December 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3
נשלח בתאריך: 21 December 2007 בשעה 15:23 | IP רשוּם
ציטוט talikag

גם וגם? זה מיותר... הרי אם הוא לא יכול להכניס אותם אין בשביל מה לבדוק תקינות. עריכה: אה... אופס... בטח התכוונת ל"ולא לא להאפשר לו להכניס אותם". =\

טוב... בכל אופן... אם אתה רוצה למנוע מהמשתמש להקליד סימנים ומספרים, תעשה את זה בעזרת ה-EventHandler של האירוע KeyDown של ה-TEXTBOX. יש לך שם אפשרות לבדוק האם זו ספרה, האם זה אות, האם זה סימן וכו'. בדוק אם התו שהוכנס לא עומד בקריטריונים שלך, ואם לא הרץ את הפקודה e.Handled = true;

אם אתה רוצה לבדוק תקינות של מחרוזת קיימת, הכי קל יהיה לעשות זאת עם שימוש ב-REGEX, כלומר, REGULAR EXPRESSIONS. בראש הדף כתוב

קוד:

using Text.RegularExpressions;

ואת הבדיקה עשה בצורה הבאה:

קוד:

if(Regex.IsMatch(textBox1.Text, "^[\w\W]+$")) ...;

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

 

אגב... טל זה אני. נרשמתי עכשיו ;)



__________________
בברכה, טל.

תכנות באינטרנט: HTML, XHTML, Javascript, CSS, PHP

פיתוח תוכנות: C#, C

חזרה לתחילת העמוד הצג את כרטיס החבר של talikag חפש הודעות אחרות של talikag בקר בדף הבית של talikag
 
11010010110
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 23 April 2006
משתמש: מנותק/ת
הודעות: 2621
נשלח בתאריך: 21 December 2007 בשעה 15:30 | IP רשוּם
ציטוט 11010010110

היי ברוך הבא

כדיי למנוע טעויות מקריות בקלט תעשה בדיקה של אותיות תוך
כדיי שהמשתמש כותב. זה מספיק חוץ מהמקרים שבמקום לכתוב
ממש הוא עושה לנתונים ctrl v וכדומה

אם את רוצה הגנה ממש תעשה בדיקה של ה string כולו באיזה
שהוא שלב (נניח כשהמשתמש עושה ok) - כי את הגנות ה on the
fly ניתן תמיד לרמות בדרך יצירתית מספיק
חזרה לתחילת העמוד הצג את כרטיס החבר של 11010010110 חפש הודעות אחרות של 11010010110
 
igalep132
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 18 December 2007
משתמש: מנותק/ת
הודעות: 13
נשלח בתאריך: 21 December 2007 בשעה 15:35 | IP רשוּם
ציטוט igalep132

תודה רבה לשניכם,
עוד כמה שאלות (רק התחלתי ללמוד #C לכן אני לא מכיר את כל האפשרויות גם את הטרוויאליות, אז תסלחו לי על הבורות)

א', הכיתוב "^[\w\W]+$"), מה הוא אומר, ואיך אני משנה אותה לפי הצרכים שלי ? (נניח רק אותיות וספרות עד 7...) וכל מניי אפשרויות בסגנון.

ב', איך אני עושה שבזמן הכתיבה מתבצעת הבדיקה של תקינות קלט ?

ג', ב event Handler של ה textBox לא מצאתי לבחור אופציות לבדיקה של הערך המוכנס

ושאלה נוספת, יש לי שני טפסים (בהתחלה אני פותח את הראשי ועליו את המשני), בטופס הראשי יש לי טיימר, אני רוצה שהוא יתחיל לעבוד רק כאשר נסגר הטופס המשני (לחיצה על Start) ניסיתי לעשות e.Handler לstart אבל הבעיה היא שהטיינר נמצא בטופס אחר, ואני לא מצליח לגשת עליו על מנת לעפילו.
מה אני יכול לעשות ?



תדוה רבה

חזרה לתחילת העמוד הצג את כרטיס החבר של igalep132 חפש הודעות אחרות של igalep132
 
talikag
משתמש מתחיל
משתמש מתחיל
סמל אישי

הצטרף / הצטרפה: 21 December 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3
נשלח בתאריך: 21 December 2007 בשעה 15:47 | IP רשוּם
ציטוט talikag

א': הכיתוב "^[\w\W]+$" יתאים לכל מחרוזת שמכילה רק אותיות (גדולות וקטנות), ללא רווחים, מספרים, וסימנים למיניהם. אם אני אסביר מדוע, אתה בטח לא תבין, וגם אם כן, זה לא ייתן כלום, כי בפעם הבאה שתרצה לבדוק מחרוזת תחת תנאים אחרים לא תצליח. לכן אני מציע שתלמד על ביטויים רגולריים או Regular Expressions (חיפוש פשוט בגוגל ייתן לך קישורים לאתרים רלוונטים). אני אישית משתמש בזה הרבה. זה מאד קל ופשוט לשימוש, ופותר המון בעיות של ניתוח מחרוזות.

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

"אם אתה רוצה למנוע מהמשתמש להקליד סימנים ומספרים, תעשה את זה בעזרת ה-EventHandler של האירוע KeyDown של ה-TEXTBOX. יש לך שם אפשרות לבדוק האם זו ספרה, האם זה אות, האם זה סימן וכו'. בדוק אם התו שהוכנס לא עומד בקריטריונים שלך, ואם לא הרץ את הפקודה e.Handled = true;"

קוד שיתאים במקרה הזה:

קוד:

if((int)e.KeyValue<65 || ((int)e.KeyValue>90 && (int)e.KeyValue<97) || (int)e.KeyValue>122)

e.Handled = true;

בקוד הנ"ל בדקתי אם הערך ASCII של התו שנקלט הוא אינו אות (שונה מ-a-zA-Z), ואם התנאי מתקיים, הפקודה e.Handled = true; תרוץ, כלומר, התו לא יוצג בתיבת הטקסט.



__________________
בברכה, טל.

תכנות באינטרנט: HTML, XHTML, Javascript, CSS, PHP

פיתוח תוכנות: C#, C

חזרה לתחילת העמוד הצג את כרטיס החבר של talikag חפש הודעות אחרות של talikag בקר בדף הבית של talikag
 
igalep132
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 18 December 2007
משתמש: מנותק/ת
הודעות: 13
נשלח בתאריך: 21 December 2007 בשעה 15:59 | IP רשוּם
ציטוט igalep132

igalep132 כתב:


ושאלה נוספת, יש לי שני טפסים (בהתחלה אני פותח את הראשי ועליו את המשני), בטופס הראשי יש לי טיימר, אני רוצה שהוא יתחיל לעבוד רק כאשר נסגר הטופס המשני (לחיצה על Start) ניסיתי לעשות e.Handler לstart אבל הבעיה היא שהטיינר נמצא בטופס אחר, ואני לא מצליח לגשת עליו על מנת לעפילו.
מה אני יכול לעשות ?



ניסיתי להפעיל את הטיימר ע"י DialogResult אבל משום מה זה לא עובד, במקום OK שאני אמור להחזיר מהטופס המשני, מוחזר Cancel
חזרה לתחילת העמוד הצג את כרטיס החבר של igalep132 חפש הודעות אחרות של igalep132
 
אביב
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 22 January 2008 בשעה 19:15 | IP רשוּם
ציטוט אביב

if(Regex.IsMatch(textBox1.Text, "^[\w\W]+$")) ...;

רושם לי ככה: Error 1 Unrecognized escape sequence 

מה לעשות?

בטוח שזה W וw? המשמעות שלהם זה רווח?

תודה מראש

חזרה לתחילת העמוד הצג את כרטיס החבר של אביב חפש הודעות אחרות של אביב בקר בדף הבית של אביב
 
^@#%
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 22 January 2008 בשעה 19:55 | IP רשוּם
ציטוט ^@#%

הצעה פשוטה שלי :
לפני הפעולה שאת\ה רוצה לעשות עם השם אז תבדוק את השם כך :
תעבור על כול התווים במחרוזת ותבדוק אם הם אותיות באנגלית עושים את זה כך :
קוד:

for (int i=0;i<myTextBox.Length;i++)
{
if ((myTextBox[i]<'a')||(myTextBox[i]>'z')
{
//do something
}
}

חזרה לתחילת העמוד הצג את כרטיס החבר של ^@#% חפש הודעות אחרות של ^@#% בקר בדף הבית של ^@#%
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה