הפיכת מחרוזות ב-C#

[22 בינואר 2008] [7 תגובות]

מהי הדרך הקלה, המהירה והפשוטה ביותר להפוך מחרוזת בשפת התיכנות #C ?

הנה המחרוזת שלנו:

string str = "Reverse Me";

המטרה שלנו היא לייצר מחרוזת חדשה המכילה את הטקסט: eM esreveR

המתכנת הממוצע מצפה ש-#C כבר דאגה לו לפונקציה כזאת, הוא כותב בקוד:

str.

עם כתיבת הנקודה(.), סביבת העבודה(Visual Studio) מראה לו את כל השיטות של המחלקה string. הוא מחפש ומחפש אך לא מוצא פונקציה בעלת השם Reverse או משהו דומה.

יכול להיות ש-#C לא מכילה שיטה כל כך בסיסית ? מסתבר שהכל יכול להיות.

אחרי חיפושים, מצאתי כי למחלקה Array(מערך) ישנה שיטה בשם Reverse ומכיוון שמחרוזת היא למעשה מערך, ניתן להשתמש בשיטה זו.

לכן נכתוב קוד בשלושה שלבים:

  1. הפיכת המחרוזת למערך.
  2. הפיכת סדר האיברים במערך.
  3. הפיכת המערך למחרוזת

הנה הפונקציה:

public static string Reverse(string str)
{
        char[] chars = str.ToCharArray();
        Array.Reverse(chars);
        return new string(chars);
}

זהו, קל ופשוט(אך למעשה היה צריך להיות פשוט יותר).

 

אם אהבת את הפוסט, אני שולח מדי פעם למייל עוד פוסטים מעניינים שלא תמיד מגיעים להתפרסם באתר. אתה מוזמן להצטרף לרשימה:
(אני שונא ספאם. אני מבטיח לעולם לא לשלוח משהו לא מעניין)

7 תגובות

  1. תמר | 1/1/2009 11:18:26 AM

    היייי אני שמחה שעליתי היום על האתר הזה......

    ממש מקסים! כתוב בצורה ברורה ונקיה ורהוטה.. אין מילים!!

    תודה לך טל! תמשיך לעדכן אותנו בטריקים מענינים..................

  2. טל | 1/1/2009 2:16:39 PM

    תודה רבה, אני בהחלט אמשיך :)

  3. דיאנה | 10/31/2009 11:45:58 PM
    וואי תודה.. חכם מאוד
  4. Gilad Naaman | 12/27/2011 2:16:39 AM
    אני די בטוח שיש שיטת הרחבה של LINQ k להפיכת מחרוזות
  5. עומרי | 3/31/2012 1:20:02 PM

    עלוב למדי.

    תלמדו לכתוב קוד נורמלי, והנה לכם פתרון פשוט ביותר:

    public static string Reverse(string str)
    {
    string newSt = "";
    for (int i = str.Length; i >= 0; i--)
    newSt += str[i];
    return newSt;
    }
     

  6. יוני | 8/8/2014 8:32:53 AM

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

    1. האם הקוד שלי עדיף?
    2. האם יש בעיה בקוד שאני מציע

     אני לא מוצא תשובה לשאלה מס' 1

    לשאלה 2 התשובה ברורה: שימוש בלולאה שעושה מניפולציות רבות על string [במקרה שלנו אם המחרוזת באורך של 100 תוים למשל,מדובר ב-100 מניפולציות], היא גרועה מאוד.

    הדרך הנכונה היא להשתמש ב-StringBuilder, אבל אז התשובה לשאלה מס' 1 בעיתית מעט

  7. fdsdg | 12/11/2016 6:55:54 AM
    spaaaaammm!!!!!

התגובות נעולות