שאלה בC#

יטרנר

New member
שאלה בC#

שלום, ניסיתי לכתוב פונקציה שמקבלת מחרוזת ואות, כשהפונקציה תעבור על כל תו ותבדוק האם הוא שווה לאות. במידה והתו שווה לאות, המחרוזת תחליף את האות במחרוזת באותה אות רק בcase אחר. לדוג'- עבור מחרוזת "stringS" והתו s תוחזר המחרוזת Strings ניסיתי לפתור כך: string str = "gioiGag"; char ch = 'g'; Console.WriteLine(str); string res = checkandreplace(str, ch); } static string checkandreplace(string str, char ch) { ch = ch.ToUpper(); string letter = ch.ToString();//for comparing it to other string for (int i = 0; i < str.Length; i++) { if (str == ch) { str = str.ToUpper(); } else if (str != ch) { str = str.ToLower(); if (str != ch) { str = str.ToUppper(); } } return str; } הבנתי שיש בעיה בהחלפת התווים. כיצד אוכל לתקן זאת? תודה מראש
 
גם אתה בא לנו בשתיים בלילה,

(אנחנו פה בתפוז במשמרת מ 8 בבוקר), וגם אתה מיישר לנו את הקוד לימין. קשה לנו לעזור לך. שלח את ההודעה שוב. לפני הקוד לחץ על [תחילת קוד] ואחריו לחץ על [סיום קוד], ונראה מה אפשר לעשות.
 

יטרנר

New member
גם אני..

string str = "gioiGag"; char ch = 'g'; Console.WriteLine(str); string res = checkandreplace(str, ch); Console.WriteLine(res); } static string checkandreplace(string str, char ch) { for (int i = 0; i < str.Length; i++) { if (str == ch) { str = str.ToUpper(); } else if (str == ch.ToUpper()) { str = str.ToLower(); ch = char.ToLower(ch); } } return str; }
 

pintyo

New member
שתי בעיות סינטקס יש לך שם

בלי לבחון את האלגוריתם (שנראה לי בעייתי משהן - נראה שאתה עושה עושה שם פעולות מיותרות) 1. כדי לשנות case של char רושמים
ch = char.ToUpper(ch)​
2. כשאתה רוצה לעבוד על תווים בתוך מחרוזת, תשתמש ב System.Text.StringBuilder , במחרוזת לא ניתן להחליף תווים.
 

pintyo

New member
בבקשה

string str = "yourString"; System.Text.StringBuilder sb = new System.Text.StringBuilder(str); sb.Append...Replace In short - read the online documentation: http://msdn2.microsoft.com/en-us/library/system.text.stringbuilder.aspx​
 

ht2006

New member
פיתרון פשוט

במקום לעבור על המחרוזת ולהחליף תו בתו, יש פונקציה בשם replace שעושה זאת, שולחים לה את התו שרוצים להחליף, ולמה רוצים להחליף.
string text = "abcabc"; char letter = 'a'; text = text.Replace(letter, Char.ToUpper(letter));​
בדקתי את זה, וזה עבד, תבדוק גם אתה.
 

ht2006

New member
תיקון

string text = "abcABC"; char letter = 'a'; for (int i = 0; i < text.Length; i++) { if (text == Char.ToLower(letter)) { text = text.Remove(i, 1); text = text.Insert(i, Char.ToUpper(letter).ToString()); } else if (text == Char.ToUpper(letter)) { text = text.Remove(i, 1); text = text.Insert(i, Char.ToLower(letter).ToString()); } } btnFriendSignUp.Text = text;

עוברים על המחרוזת אם נתקלנו באות , אם היא גדולה, מעיפים אותה, ומכניסים באותו מקום את זאת הקטנה. אם היא קטנה, מעיפים אותה, ומכניסים באותו מקום את זאת הקטנה.
 

ht2006

New member
הסבר

string text = "abcABC"; char letter = 'a'; for (int i = 0; i < text.Length; i++) { if (text == Char.ToLower(letter)) { text = text.Remove(i, 1); text = text.Insert(i, Char.ToUpper(letter).ToString()); } else if (text == Char.ToUpper(letter)) { text = text.Remove(i, 1); text = text.Insert(i, Char.ToLower(letter).ToString()); } } btnFriendSignUp.Text = text;

יש כאן מחרוזת abcABC אנחנו רוצים לעשות AbcaBC , נכון? עוברים על כל המחרוזת, אם נפגשים באות שהיא האות הקטנה של a ז"א a מעיפים אותה - את האות במקום ה-i, נשים במקום ה-i את אותה אות רק בגדול ז"א A כנ"ל אם נפגשנו באות שהיא האות הגדולה של a ז"א A מעיפים אותה במקומה שמים a מובן??
 
למעלה