שבירת מיתרי YAML על פני מספר רב של קווים

1. סקירה כללית

במאמר זה נלמד על שבירת מיתרי YAML על פני מספר שורות.

על מנת לנתח ולבדוק את קבצי ה- YAML שלנו, נשתמש בספריית SnakeYAML.

2. מיתרי רב קו

לפני שנתחיל, בואו ניצור שיטה פשוט לקרוא מפתח YAML מקובץ ל- חוּט:

מחרוזת parseYamlKey (שם מחרוזת, מפתח מחרוזת) {InputStream inputStream = this.getClass () .getClassLoader () .getResourceAsStream (fileName); מפה מנוסחת = yaml.load (inputStream); return parsed.get (מפתח); }

בסעיפי המשנה הבאים נבחן כמה אסטרטגיות לפיצול מחרוזות על פני מספר שורות.

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

3. סגנון מילולי

המפעיל המילולי מיוצג על ידי סמל הצינור ("|"). זה שומר על מעברי השורות שלנו אבל מצמצם שורות ריקות בסוף המחרוזת עד להפסקת שורה אחת.

בואו נסתכל על קובץ YAML מילולי. יאמל:

מפתח: | קו 1 קו 2 קו 3

אנו יכולים לראות כי מעברי השורה שלנו נשמרים:

מפתח מחרוזת = parseYamlKey ("מילולית.יאמל", "מפתח"); assertEquals ("קו 1 \ nLine2 \ nLine3", מפתח);

לאחר מכן, בואו נסתכל על מילולית 2. yaml, שיש כמה מעברי שורה מובילים וסיום:

מפתח: | קו 1 קו 2 קו 3 ...

אנו יכולים לראות שכל מעבר שורה נמצא למעט מעברי שורות סיום, אשר מצטמצמים לאחת:

מפתח מחרוזת = parseYamlKey ("מילולית 2. yaml", "מפתח"); assertEquals ("\ n \ nLine1 \ n \ nLine2 \ n \ nLine3 \ n", מפתח);

לאחר מכן נדבר על חסימת חסימות וכיצד זה נותן לנו שליטה רבה יותר על מעברי שורות התחלה וסיום.

אנו יכולים לשנות את התנהגות ברירת המחדל באמצעות שתי שיטות chomping: לשמור ולהפשיט.

3.1. לִשְׁמוֹר

Keep מיוצג על ידי "+" כפי שאנו יכולים לראות ב מילולית.שמור.יאמל:

מקש: | + קו 1 קו 2 קו 3 ...

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

מפתח מחרוזת = parseYamlKey ("מילולית_קיף.יאמל", "מפתח"); assertEquals ("קו 1 \ nLine2 \ nLine3 \ n \ n", מפתח);

3.2. לְהִתְפַּשֵׁט

הרצועה מיוצגת על ידי "-" כפי שאנו יכולים לראות ב ליטרלי_סטריפ.יאמל:

מקש: | - Line1 Line2 Line3 ...

כפי שציפינו, התוצאה היא מסיר כל שורה ריקה מסתיימת:

מפתח מחרוזת = parseYamlKey ("ליטרלי_סטריפ.יאמל", "מפתח"); assertEquals ("קו 1 \ nLine2 \ nLine3", מפתח);

4. סגנון מקופל

המפעיל המקופל מיוצג על ידי ">" כפי שניתן לראות ב מקופל.יאמל:

מקש:> קו 1 קו 2 קו 3

כברירת מחדל, מעברי שורות מוחלפים בתווי רווח עבור שורות רצופות שאינן ריקות:

מפתח מחרוזת = parseYamlKey ("מקופל. Yaml", "מפתח"); assertEquals ("קו 1 קו 2 קו 3", מפתח);

בואו נסתכל על קובץ דומה, מקופל 2. yaml, שיש בו כמה שורות ריקות המסיימות:

מקש:> Line1 Line2 Line3 ...

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

מפתח מחרוזת = parseYamlKey ("מקופל 2. yaml", "מפתח"); assertEquals ("קו 1 קו 2 \ n \ n קו 3 \ n", מפתח);

עלינו לזכור זאת chomping בלוק משפיע על סגנון הקיפול באותו אופן שהוא משפיע על הסגנון המילולי.

5. הצעת מחיר

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

5.1. ציטוטים כפולים

עם ציטוטים כפולים, אנו יכולים ליצור מחרוזות מרובות שורות בקלות באמצעות "\ n“:

מפתח: "Line1 \ nLine2 \ nLine3"
מפתח מחרוזת = parseYamlKey ("plain_double_quotes.yaml", "key"); assertEquals ("קו 1 \ nLine2 \ nLine3", מפתח);

5.2. ציטוטים בודדים

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

מפתח: 'Line1 \ n Line2 Line3'
מקש מחרוזת = parseYamlKey ("פשוט_ציטוטים.יאמל", "מפתח"); assertEquals ("קו 1 \ nLine2 \ nLine3", מפתח);

6. מסקנה

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

כמו תמיד, הקוד זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found