Split Java String بواسطة New Line



Answers

إذا كنت لا تريد خطوط فارغة:

String.split("[\\r\\n]+")
Question

أحاول تقسيم النص في JTextArea باستخدام regex لتقسيم String بواسطة \n ومع ذلك ، فإن هذا لا يعمل كما أنني حاولت استخدام \r\n|\r|n والعديد من المجموعات الأخرى من regexes. الشفرة:

public void insertUpdate(DocumentEvent e) {
    String split[], docStr = null;
    Document textAreaDoc = (Document)e.getDocument();

    try {
        docStr = textAreaDoc.getText(textAreaDoc.getStartPosition().getOffset(), textAreaDoc.getEndPosition().getOffset());
    } catch (BadLocationException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    split = docStr.split("\\n");
}



إذا كنت لا تريد ، لسبب ما ، استخدام String.split (على سبيل المثال ، بسبب التعبيرات العادية ) وتريد استخدام البرمجة الوظيفية على Java 8 أو الأحدث:

List<String> lines = new BufferedReader(new StringReader(string))
        .lines()
        .collect(Collectors.toList());



ربما هذا من شأنه أن يعمل:

إزالة الخطوط المائلة العكسية المزدوجة من معلمة طريقة الانقسام:

split = docStr.split("\n");



جميع الإجابات المقدمة هنا لا تحترم فعليًا تعريف Javas للخطوط الجديدة كما هو موضح في مثال: BufferedReader # readline. تقبل Java \n ، \r و \r\n كخط جديد. تتطابق بعض الإجابات مع عدة أسطر فارغة أو ملفات مشوهة. E..g. <sometext>\n\r\n<someothertext> عند استخدام [\r\n]+ سيؤدي إلى سطرين.

String lines[] = string.split("(\r\n|\r|\n)", -1);

في المقابل ، تحتوي الإجابة أعلاه على الخصائص التالية:

  • أنه يتوافق مع تعريف Javas لخط جديد مثل على سبيل المثال BufferedReader يستخدمه
  • لا يطابق عدة أسطر جديدة
  • لا يزيل زائدة الخطوط الفارغة



String lines[] =String.split( System.lineSeparator())




  • حاول هذا الأمل كان مفيدًا لك
 String split[], docStr = null;
Document textAreaDoc = (Document)e.getDocument();

try {
    docStr = textAreaDoc.getText(textAreaDoc.getStartPosition().getOffset(), textAreaDoc.getEndPosition().getOffset());
} catch (BadLocationException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

split = docStr.split("\n");



String.split(System.getProperty("line.separator"));

يجب أن يكون هذا النظام مستقلاً




Links