עבור לתוכן

#C איך להפריד רשימה של הגדרות עם key מסויים למערך?

Featured Replies

פורסם

יש לי רשימה של "הגדרות" שבנויות בצורה הבאה:


key:'property'
key:'property'
key:'property'
key:'property'
key:'property'
...

אני מחפש להפריד את ההגדרות עם key מסויים (יש לי ברשימה כמה עם אותו key וה property משתנה בינהם) ולהכניס את ה property שלהם לתוך מערך סטרינג.

ניסיתי להשתמש בביטוי רגולרי, אבל אני ממש בור בקטע הזה ולא הולך לי.

לא עולה לי בראש דרך פשוטה לבצע זאת, אז אני אשמח לעזרה.

פורסם

הרשימה הזו נתונה כמחרוזת אחת ארוכה?

קודם כל אתה יכול לפצל אותה למערך של מחרוזות באמצעות הפונקציה String.Split (כל שורה תהיה איבר במערך), ולאחר מכן לנתח כל שורה באופן עצמאי (לדוגמה לחפש את הנקודתיים ולפצל לפיהן).

גם באמצעות ביטויים רגולרים זה די פשוט, רק צריך לדעת איך להשתמש בהם.... יש הרבה מדריכים ברשת, כגון:

http://www.regular-expressions.info/tutorial.html

http://msdn.microsoft.com/en-us/library/ms228595%28v=vs.80%29.aspx

פורסם
  • מחבר

בשעה טובה הסתדרתי...

זה מה שעשיתי:


string[] pairs = input.Split(new string[] { Environment.NewLine},StringSplitOptions.None);
List<string> aa = pairs.ToList();
aa.RemoveAt(0); //באיבר הראשון אין שום דבר שאני צריך
foreach (string pair in aa)
{
string[] paramvalue = pair.Split(':');
Console.WriteLine(paramvalue[0]);
if (paramvalue[0] == key){
valuesArray.Add(paramvalue[1]);
}
}

והאמת שעכשיו שאני חושב על זה, אני יכול גם להסתדר בלי להוריד את האיבר הראשון מהמערך של ה pairs

פורסם

:xyxthumbs:

פשוט ולעניין.

אם אתה עובד בדוטנט 3.5 ומעלה יכלת גם לוותר על המרת המערך לרשימה, ואז לדלג על האיבר הראשון באמצעות Skip, דהיינו:

string[] pairs = input.Split(new string[] { Environment.NewLine},StringSplitOptions.None);
foreach (string pair in pairs.Skip(1))
{
string[] paramvalue = pair.Split(':');
Console.WriteLine(paramvalue[0]);
if (paramvalue[0] == key){
valuesArray.Add(paramvalue[1]);
}
}

פורסם
  • מחבר

נשמור זאת לעתיד.

תודה :)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים