أعتقد أن الجميع يستخدمون غالبًا طريقة الانقسام للسلسلة ، لكن هل واجهت المواقف التالية:
يفكر الجميع في نتيجة تنفيذ الكود التالية
public static void (string [] args) {// todo auto-generatd method string str1 = "a ، b ، c ، a" ؛ ، B ، C ،، "" ؛ "" "،") ؛ طول STR3: "+"+ S3.Length) ؛}
نتائج التنفيذ:
لماذا تظهر هذه النتيجة؟
حل:
من خلال عرض API ، وجدنا أن طريقة الانقسام الشائعة الاستخدام لدينا يتم إرسالها بشكل افتراضي.
public static void (string [] args) {// todo auto-generatd method string str1 = "a ، b ، c ، a" ؛ ، ب ، ج ، ، " split ("، -1) ؛ "طول str3:"+s3.length) ؛}
بعد العثور على واجهة برمجة التطبيقات ، وجدت أنه في فئة السلسلة ، هناك طريقتان للحمل الثقيل المقسمان
1. السلسلة العامة [] split (سلسلة regex)
يتم تقسيم هذه السلاسل وفقًا للتعبير العادي المعطى.
دور هذه الطريقة مثل استخدام تعبير معين والحد من المعلمة 0 لاستدعاء طريقة تقسيم اثنين. لذلك ، لا يتضمن الصفيف سلسلة النهاية الفاخرة.
على سبيل المثال ، يمكن لسلسلة "boo: و: foo" إنشاء النتائج التالية:
نتائج Regex
: {"boo" ، "و" ، "foo"} o {"b" ، "" ، ": و: f"}
المعلمة:
Regex -fixed Law التعبير العادي يعود:
صفيف السلسلة ، الذي يتم طرحه وفقًا لمطابقة التعبير العادي لتقسيم هذه السلسلة:
PatternsyntaxException -إذا كانت القواعد النحوية في التعبير العادي غير صالح
2. السلسلة العامة [] split (regex string ، int)
يتم تقسيم هذه السلاسل وفقًا للتعبير العادي الذي قدمه المطابقة.
يحتوي المصفوفة التي يتم إرجاعها على هذه الطريقة على تنهي هذه السلسلة الفرعية. يتم ترتيب التركية الفرعية في الصفيف بالترتيب الذي يظهرون في هذه السلسلة. إذا كان التعبير لا يتطابق مع أي جزء من المدخلات ، فإن صفيف الدخل يحتوي على عنصر واحد فقط ، أي هذه السلسلة.
الحد من تطبيقات التحكم في المعلمة ، وبالتالي تؤثر على طول الصفيف. إذا كان هذا الحد N أكبر من 0 ، فسيتم استخدام الوضع معظم N -once ، ولن يكون طول الصفيف أكبر من N ، وسيحتوي العنصر الأخير من الصفيف على جميع المدخلات خارج الحدود المطابقة النهائية. إذا كان N غير إيجابي ، فسيتم استخدام الوضع قدر الإمكان ، وقد يكون الصفيف أي طول. إذا كان N 0 ، فسيتم استخدام الوضع قدر الإمكان ، يمكن أن يكون الصفيف أي طول ، وسيتم التخلص من سلسلة End -End.
على سبيل المثال ، يمكن لسلسلة "boo: و: foo" إنشاء النتائج التالية مع هذه المعلمات:
نتائج regexlimit
: 2 {"boo" ، "و: foo"}: 5 {"boo" ، "و" و "foo"}: -2 {"boo" ، "و" foo "} o 5 {" b " "" ، ": و: f" ، "" ، "} o -2 {" b "،" "،": و: f "،" ، "} o 0 {" b "،": and: F "}
شكل str.split (regex ، n) الذي يدعو هذه الطريقة هو بالضبط نفس النتائج التي تنتجها التعبيرات التالية:
pattern.compile (regex) .split (str ، n)
المعلمة:
regex -تعبير تعبير منتظم
الحد الأقصى -العتبة ، كما هو موضح أعلاه
يعود:
صفيف السلسلة ، يتم تحديده وفقًا لمطابقة تعبير التعبير العادي.
رمي:
PatternsyntaxException -إذا كانت القواعد النحوية في التعبير العادي غير صالح