דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. הסרת שורות ריקות מ-string ב-C#

הסרת שורות ריקות מ-string ב-C#

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 5 כותבים 464 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי dovid
    #2

    אפשרות נוספת:

     Regex.Replace(input, @"^\s*\n", "", RegexOptions.Multiline);
    

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    3
    • M מנותק
      M מנותק
      Mordechai 0
      השיב לpcinfogmach ב נערך לאחרונה על ידי
      #3

      @pcinfogmach

      קוד יפה מאוד!!!
      אם יורשה לי אני לא ליד מחשב עם VS בשביל לבדוק את הקוד אבל בכל אופן יש לי קצת הערות
      חשוב להבין מה כתבת בכדי להבין מה קורה בקוד

      var lines = input.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
      

      פה אתה מחלק את המחרוזת לפי שני תווים גם לפי \r וגם לפי \n ומסיר את האייטמים הריקים

      זה אומר שהשורה

      var nonEmptyLines = lines.Where(line => !string.IsNullOrWhiteSpace(line));
      

      מיותרת

      בשורה

      return string.Join("\n", nonEmptyLines);
      

      אתה מחבר את הרשימה חזרה למחרוזת אם \n בין כל אייטם

      אני רואה שאתה משתמש בextension
      כדי לך גם להפוך את string.Jion ל extension (זה יהיה לך מאוד שימושי בהמשך)
      אני חושב שהדרך הטובה יותר לכתוב את הקוד הוא

      public static string RemoveEmptyLines(this string input)
      {
          return input.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToStringJoin();
      }
      public static string ToStringJoin<T>(this IEnumerable<T> input, string separator = "\n")
      {
          return string.Join(separator, input);
      }
      
      תגובה 1 תגובה אחרונה
      0
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #4

        @Mordechai-0 הסרת אייטמים ריקים לא מסירה שורות בהם יש רווחים בלבד, משא"כ הWhere.

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        2
        • yossizY מנותק
          yossizY מנותק
          yossiz
          כתב ב נערך לאחרונה על ידי
          #5

          @pcinfogmach כדאי לתקן את שם הפונקציה שישקף בצורה מדוייקת את התוכן
          הייתי קורא לזה removeWhitespaceOnlyLines (מסתבר שזה היה גם חוסך את אי ההבנה של @Mordechai-0)

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          תגובה 1 תגובה אחרונה
          3
          • קומפיונטק מנותק
            קומפיונטק מנותק
            קומפיונט
            כתב ב נערך לאחרונה על ידי קומפיונט
            #6

            @pcinfogmach
            במקום:

            return string.Join("\n", nonEmptyLines);
            

            עדיף:

            return string.Join(Environment.NewLine, nonEmptyLines);
            

            אני הייתי עושה את זה גם בשורה הראשונה במקום: new[] { '\r', '\n' }

            yossizY תגובה 1 תגובה אחרונה
            4
            • yossizY מנותק
              yossizY מנותק
              yossiz
              השיב לקומפיונט ב נערך לאחרונה על ידי
              #7

              @קומפיונט כתב בהסרת שורות ריקות מ-string ב-C#:

              אני הייתי עושה את זה גם בשורה הראשונה במקום: new[] { '\r', '\n' }

              לא תמיד מעברי השורה של המחרוזת מתאימים למעבר השורה הדיפולטית של מערכת ההפעלה

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              קומפיונטק תגובה 1 תגובה אחרונה
              5
              • קומפיונטק מנותק
                קומפיונטק מנותק
                קומפיונט
                השיב לyossiz ב נערך לאחרונה על ידי קומפיונט
                #8

                @yossiz נכון, לכן לא הצעתי את זה, אבל אני אישית הייתי עושה ככה.
                (כי בינתיים אף פעם לא נתקלתי בבעיה כזאת, ולעשות new[] { '\r', '\n' } כנראה יגרום ליצירת שורות ריקות מיותרות, כי ב-windows שורה חדשה זה: r\n\)

                M תגובה 1 תגובה אחרונה
                0
                • M מנותק
                  M מנותק
                  Mordechai 0
                  השיב לקומפיונט ב נערך לאחרונה על ידי
                  #9

                  @קומפיונט כתב בהסרת שורות ריקות מ-string ב-C#:

                  @yossiz נכון, לכן לא הצעתי את זה, אבל אני אישית הייתי עושה ככה.
                  (בנתיים אף פעם לא נתקלתי בבעיה כזאת, מעניין באמת מה עדיף)

                  יש הרבה פלטפורמות שהמרחק בין השורות נמדד לפי זה
                  כלומר: \n מרחק קטן (לשימוש בין שורות)
                  \r\n מרחק גדול יותר (לשימוש בין פסקאות)

                  תגובה 1 תגובה אחרונה
                  0
                  • קומפיונטק מנותק
                    קומפיונטק מנותק
                    קומפיונט
                    כתב ב נערך לאחרונה על ידי קומפיונט
                    #10

                    @pcinfogmach עוד אופציה למיטוב ביצועים, זה להשתמש ב - StringBuilder עם AppendLine, ולא עם Where ו - string.Join

                    תגובה 1 תגובה אחרונה
                    1
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #11

                      @קומפיונט המתודה string.Join נחשבת יעילה.
                      תבדוק.

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      2

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום