Java: строка в таблицу - PullRequest
       29

Java: строка в таблицу

0 голосов
/ 17 апреля 2011

В Java у меня есть строка вроде этой «0564 \ n5523 \ n5445 \ n8596», и я хотел бы более или менее создать такую ​​таблицу:

. * . .
* * . .
* . . *
. * . .

В которой * означает, что она равнадо 5 а.означает, что он не равен 5.

Базовая строка напрямую извлекается из текстового файла (все еще не знаю, как я это сделаю, но если у кого-то есть простая и понятная документация об этом ...; -)).

Метод, который я хочу сделать, выглядит примерно так (я знаю, что начальные размеры таблицы и строка всегда будут соответствовать измерениям)

int counter = 0;
for (int r=0;r<size;r++)
{
    for (int c=0;c<size;c++)
    {
        if thestring.charAt(counter)=='5' 
        {
            thetable[c][r]='*';
        }
        else
        {
            thetable[c][r]='.';
        }
        counter++;
    }
    counter = counter+2; //To skip the \n.
}

Так что в основном мой первыйвопрос "Есть ли другой способ сделать это?"Мне это совсем не нравится, потому что «пропуск» символов, которые я не хочу оценивать, кажется неубедительным.

Второй вопрос (я просто хочу убедиться): «Является ли \ n 2символы в строке? "

Последний вопрос больше касается текстовых файлов, если текстовый файл, из которого я извлекаю строку, находится в Windows, строка не будет выглядеть как" 0564 \ r \ n5523 \ r \ n5445\ r \ n8596 "?

Ответы [ 2 ]

1 голос
/ 17 апреля 2011

Домашнее задание

public class d {
  public static void main(String[] args) {
    String s = "0564\n5523\n5445\n8596";
    System.out.println(s.replaceAll("[^5\n]", ".")
      .replace('5', '*')
      .replaceAll("(.)(?!\n|$)", "$1 ")
      .replaceAll("(\r|\n|\r\n)", System.getProperty("line.separator")));
  }
}
0 голосов
/ 17 апреля 2011

1-й вопрос: почему бы просто не заменить все? т.е.

str.replaceAll("5", "*").replaceAll("[0-9]", ".")

2-й вопрос: "\ n" рассматривается как один символ.

3-ий вопрос: если он был создан в Windows.

...