Как разделить строку дважды и автоматически создать таблицу (с n элементами)? - PullRequest
1 голос
/ 14 мая 2019

(Абсолютный новичок здесь) Моя цель - это таблица, в которой элементы в отдельном массиве в одной строке разделяются запятой и новой строкой после пробела ("").

Новая строкаДолжен начинаться после пробела (то есть я не могу заменить его, скажем, точкой).Я думаю, что моя самая большая проблема в том, что я не могу разделить «красивые 105» (обратите внимание на пространство).Он всегда считается одним элементом.

В данный момент строка содержит только 8 элементов, но вы должны представить, что строка очень длинная.

Сначала я хочу разделить строку (включая «довольно 105»)

В цикле я попытался сделать так, чтобы она «прыгала» после «симпатичной», потому что она должна разделяться здесь

public static void main(String[] args) {

    String str = "104,Jeans,B&B,pretty 105,Shoes,Nike,nice";
    List<String> Row = Arrays.asList(str.split(" "));
    List<String> List = Arrays.asList(str.split(","));      


    StringBuilder buf = new StringBuilder();
    buf.append("<html>" +
               "<body>" +
               "<table>" +
               "<tr>" +
               "<th>Number</th>" +
               "<th>Name</th>" +
               "<th>Maker</th>" +
               "<th>Description</th>" +
               "</tr>");

    for (int j = 0; j < Row.size(); j++) {

        int i = j*4;

        for (; i < List.size(); i++) {              

          if (i<1+i) {
              buf.append("<tr><td>")
              .append(List.get(i))
              .append("</td>");
          }
          else if (i>=1+i) {
              buf.append("<td>") 
              .append(List.get(i))
              .append("</td>");
          }
          else if (i>3+i) {
              buf.append("<td>") 
              .append(List.get(i))
              .append("</td></tr>");
              break;
          }
    }
    }



    buf.append("</table>" +
               "</body>" +
               "</html>");
    String html = buf.toString();
    System.out.println(buf);}

В этом примере ожидаемый результат:

Число Имя Создатель Описание

104, Джинсы, B & B, красивые
105, Обувь, Nike, красивые

Но в приведенном выше примере у каждого из них есть своя линия - за исключением "довольно 105":

104

Джинсы

B & B

довольно 105

.,.

1 Ответ

0 голосов
/ 14 мая 2019

Это то, что вы хотите?

public class Main {
    public static void main(String[] args) {
        String str = "104,Jeans,B&B,pretty 105,Shoes,Nike,nice";
        final String join = String.join("\n", str.split(" "));
        System.out.println(join);
    }
}

EDIT:

public static void main(String[] args) {

    String str = "104,Jeans,B&B,pretty 105,Shoes,Nike,nice";
    final String[] lines = str.split(" ");

    StringBuilder buf = new StringBuilder();
    buf.append("<html>" + "<body>" + "<table>" + "<tr>" + "<th>Number</th>" + "<th>Name</th>" + "<th>Maker</th>" + "<th>Description</th>" + "</tr>");

    for (String line : lines) {
        buf.append("<tr><td>")
                .append(line)
                .append("</td><td>");
    }
    buf.append("</table>" + "</body>" + "</html>");
    System.out.println(buf);
}
...