في الواقع ، لا يوجد محتوى تقني ، لأنني لا أستطيع تذكره ، لذلك سأقوم بتسجيله في هذه المقالة.
عادة ، هناك العديد من رسائل الرسائل القصيرة في نظام التطبيق الخاص بنا ، أو دفع الرسائل ، وما إلى ذلك ، ولكن هذه الرسائل لها نفس القواسم المشتركة ، مثل تغيير اسم المستخدم.
مثل واحد أدناه ، باستثناء الخط الأحمر ، الباقي هو نفسه.
عزيزي العملاء: يجب أن يتم سداد حساب Alipay الخاص بك 110 **** 11 قرض التاجر عبر الإنترنت 1999.99 يوان في 2018-06-10. سيقوم النظام تلقائيًا بخصم رصيد حساب ALIPAY ، وبطاقة التوفير المحددة ، و Yu'ebao ، وحساب تسوية بنك الإعلان الخاص بك و Yu'ebao (إن وجد) في 2018-06-10. نظرًا للحد المحدود على السداد وقرض بطاقة الادخار ، يرجى إعطاء الأولوية لضمان أن يكون رصيد Yu'ebao ، وحساب تسوية بنك الإعلان ، و Yu'ebao كافية. (إذا كنت قد سددت بالفعل ، فيرجى تجاهل هذه المعلومات) [بنك مكافحة التجارة]
قد يكون لدى الطلاب المختلفين حلول مختلفة. فيما يلي حلولي للرجوع إليها. بالطبع ، إذا كان هناك حل أفضل ، يمكنك مشاركته ~
الحل 1: الوضع المرمز
يمكن ترميزها في الكود ، أو قراءة في ملف التكوين. يجب أن يكتب الطلاب الذين لديهم خبرة في الترميز
المزايا: محتوى الرسالة بديهي ويمكن تعديل محتوى الرسالة النصية مباشرة في الكود
العيوب: الكود لا لزوم له وليست موجزة ، ويتسبب في إعادة تشغيل الخادم من الخادم بسبب الحاجة التي لا مفر منها إلى تعديل محتوى الرسالة.
الحل 2: تخزين في قاعدة البيانات
قم بتخزين قوالب الرسائل الشائعة في الخادم وقراءة وحلية مباشرة من قاعدة البيانات عند الحاجة.
يُعتقد أن التحليل بعد القراءة كان ألف شخص وطرق ، ولكل منها حلوله الخاصة ، ولكل منها مزاياها وعيوبها.
أنا هنا أستخدم طريقة MessageFormat.format في java.text包، والتي يمكن أن تتطابق بسهولة مع رسائل القالب الخاصة بنا وتحليلها.
مقدمة لطريقة messageformat
يتم استخدام MessageFormat لتنسيق رسالة ، وعادة ما تكون سلسلة ، مثل:
String str = "أنا لست {0} ، العمر هو {1 ، الرقم ، القصير} ، الارتفاع هو {2 ، الرقم ،#.#}" ؛يمكن لـ Messageformat تنسيق هذه الرسائل ثم إدراج السلسلة المنسقة في الموضع المناسب في النمط ، مثل:
استبدل {0} في STR بـ "pig" ، {1 ، number ، Short} بالرقم 8 ، و {2 ، الرقم ،#.#} بالرقم 1.2.
ثم ما يحصل عليه المستخدم النهائي هو سلسلة منسقة "أنا لست خنزيرًا ، العمر هو 8 ، ارتفاع هو 1.2".
لا يرتبط MessageFormat نفسه بالمحطة ، ولكن بالوضع الذي يوفره المستخدم إلى MessageFormat ونمط الشكل الفرعي للمعلمات المدرجة لإنشاء رسائل مناسبة لمجموعة مختلفة.
وضع MessageFormat (الجزء الرئيسي):
formatelement:
{pumpumentIndex}
{PINCUMENINDEX ، formattype}
{PINCUMENINDEX ، FormatType ، FormatStyle}
formattype:
رقم
تاريخ
وقت
الاختيار (يتطلب choiceformat)
FormatStyle:
قصير
واسطة
طويل
ممتلىء
عدد صحيح
عملة
في المئة
subformatpattern
خذ str كمثال ، في هذه السلسلة:
1. {0} و {1 ، number ، short} و {2 ، number ،#.#} ؛ كلاهما ينتمي إلى Formatelement ، 0،1،2 هي PessionIndex.
2. الرقم في {1 ، الرقم ، المختصر} ينتمي إلى formattype ، بينما ينتمي القصير إلى FormatStyle.
3.#.#في {1 ، الرقم ،#.#} ينتمي إلى وضع الشكل الفرعي.
تحديد FormAtType و FormatStyle هو إنشاء قيم تنسيق التاريخ ، وأرقام من الدقة المختلفة ، وأنواع النسبة المئوية ، إلخ.
مثال:
1. لا يقتصر رقمه على 10 من 0 إلى 9. يمكن أن يتكون من أرقام من 0 إلى 9 ، لذلك يمكن أن يكون هناك الكثير ، مثل:
سلسلة pig = "{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} Object [] {"A" ، "B" ، "C" ، "D" ، "E" ، "F" ، "G" ، "H" ، "I" ، "J" ، "K" ، "L" ، "M" ، "N" ، "O" ، "P" ، "Q"} ؛ قيمة السلسلة = messageformat.format (رسالة ، صفيف) ؛ System.out.println (value) ؛ النتيجة النهائية هي: ABCDEFGHIJKLMNOPQ
2. عند تنسيق سلسلة ، تمثل اقتباس واحد فقط اقتباس واحد ، وسيتم حذف عرض أسعار واحد ، مثل:
Message String = "OH ، {0} هو" خنزير "؛ Object [] Array = New Object [] {"Zhangsan"} ؛ قيمة السلسلة = messageformat.format (رسالة ، صفيف) ؛ System.out.println (value) ؛ النتيجة النهائية هي: oh, ZhangSan is a pig
أضف اقتباسات واحدة إلى الحرف أ ، مثل:
Message String = "OH ، {0} هو '' '' pig" ؛ Object [] Array = New Object [] {"Zhangsan"} ؛ قيمة السلسلة = messageformat.format (رسالة ، صفيف) ؛ System.out.println (value) ؛ النتيجة النهائية هي: oh, ZhangSan is 'a' pig
3. اقتباسات واحدة ستحتفظ بحرف أو سلسلة أصيلة.
لذلك ، إذا لم تكن هناك متطلبات خاصة ، فيجب إزالة الاقتباسات الفردية قبل التنسيق الرسمي ، وإلا فلن تتسبب في مشكلة غير ضرورية ، مثل:
رسالة سلسلة = "أوه ، '{0}' هو خنزير" ؛ Object [] Array = New Object [] {"Zhangsan"} ؛ قيمة السلسلة = messageformat.format (رسالة ، صفيف) ؛ System.out.println (value) ؛النتيجة النهائية هي: أوه ، {0} هو "خنزير" ، لا يمكن عرض Zhangsan هنا.
على سبيل المثال ، باستخدام نمط الشكل الفرعي ، هناك اقتباس واحد إضافي:
Message String = "OH ، '{0 ، number ،#.#} هو خنزير" ؛ Object [] Array = New Object [] {New Double (3.1415)} ؛ قيمة السلسلة = messageformat.format (رسالة ، صفيف) ؛ System.out.println (value) ؛ النتيجة النهائية هي: oh, {0,number,#.#} is 'a' pig。
إذا كان الأمر هكذا ، فيمكن عرضه بشكل صحيح.
Message String = "OH ، {0 ، number ،#.#} هو خنزير" ؛ Object [] Array = New Object [] {New Double (3.1415)} ؛ قيمة السلسلة = messageformat.format (رسالة ، صفيف) ؛ System.out.println (value) ؛ النتيجة النهائية هي: oh, 3.1 is a pig
3. سواء كانت سلسلة مقتبسة أو سلسلة غير مقصودة ، فإن الدعامة المجعد اليسرى غير مدعومة ، ولكن الدعامة المجعد اليمنى مدعومة ، مثل:
رسالة سلسلة = "أوه ، {هو خنزير" ؛ Object [] Array = New Object [] {"Zhangsan"} ؛ قيمة السلسلة = messageformat.format (رسالة ، صفيف) ؛ System.out.println (value) ؛ النتيجة النهائية هي:异常java.lang.IllegalArgumentException: Unmatched braces in the pattern
يمكن عرض الدعامة الصحيحة ، مثل:
رسالة سلسلة = "أوه ،} هو خنزير" ؛ Object [] Array = New Object [] {"Zhangsan"} ؛ قيمة السلسلة = messageformat.format (رسالة ، صفيف) ؛ System.out.println (value) ؛ النتيجة النهائية هي: oh, } is a pig
حول طريقة messageformat.format:
في كل مرة يتم فيها استدعاء طريقة messageformat.format ، سيتم إنشاء مثيل لـ MessageFormat ، وهو ما يعادل رسالة Messageformat مرة واحدة فقط. طريقة تنسيق فئة messageformat هي كما يلي:
تنسيق السلسلة الثابتة العامة (نمط السلسلة ، الكائن ... وسيطات) {messageformat temp = new messageformat (pattern) ؛ إرجاع temp.format (الحجج) ؛ }إذا كنت ترغب في إعادة استخدام مثيل MessageFormat ، فيمكنك استخدام الطريقة التالية:
رسالة سلسلة = "أوه ، {0} هو خنزير" ؛ messageformat messageformat = new MessageFormat (message) ؛ Object [] Array = New Object [] {"Zhangsan"} ؛ قيمة السلسلة = messageformat.format (صفيف) ؛ System.out.println (value) ؛ النتيجة النهائية هي: oh, ZhangSan is a pig
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.