Освой Processing играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Строки, текстовые файлы

Работаем со строками

Строка указывается в двойных кавычках. У строк есть много функций. Если вы знакомы с другими языками программирования, то они вам знакомы. Только малая часть из них:


String cat = "Котяра";

void setup() {} 

void draw() {
    println(cat.length());
    println(cat.charAt(1));
    println(cat.substring(0, 3));
    println(cat.toUpperCase());
}

В первой строке вычисляется длина строки, во второй - символ в указанной позиции, в третьей - подстрока, в четвёртой - вывод в верхнем регистре.

Для соединения массива строк в одну строку используется функция join().

Для разбивки строки на массив строк используется функция split().

Функция trim() удаляет пробелы в начале и конце строки.

Чтение текстовых файлов

Подготовим текстовый файл с несколькими строками текста. Файл следует сохранить в папке data вашего скетча.


String[] textLines;

void setup()
{
    size(640, 200);
    textLines = loadStrings("cat.txt");
    noLoop();
}

void draw()
{
    background(255);
    for (int i = 0; i < textLines.length; i++) {
        println(i + ". " + textLines[i]);
    }
}

Функция loadStrings() загружает файл и возвращает массив переменных типа String. Мы можем получить доступ к каждой строке по отдельности. Текст выводится в консоли с нумерацией строк.

CSV

Если нужно работать с файлами CSV, в которых данные разделены запятыми, то можно задействовать дополнительные функции.


String[] textLines;

void setup()
{
  size( 640, 200 );
  textLines = loadStrings("cat.csv");
  noLoop();
} 

void draw()
{
  background(255);
  
  for (int i = 0; i < textLines.length; i++) {
    String[] currentLine = split(textLines[i], ",");
    
	for (int j = 0; j < currentLine.length; j++){
        println(currentLine[j]);
    }
  }
}

Разница заключается в применении функции split(). Первый параметр использует строку, содержащую данные, разделённых запятой. Второй параметр указывает на символ, который служит разделителем.

XML


XML xml;

void setup()
{
  xml = loadXML("some.xml");
  noLoop();
} 

void draw()
{
  XML[] kids = xml.getChildren("element");
  for (int i = 0; i < kids.length; i++) {
    int id = kids[i].getInt("id");
    String url = kids[i].getString("url");
    String txt = kids[i].getContent();
    println(i + ": " + id + " " + url + " " + txt);
  }
}

XML-файл имеет определённую структуру. Различные методы позволяет извлечь нужные данные. Метод getChildren() возвращает дочерние узлы в виде массива.

Узел может иметь атрибуты. Если это целое число, то вызываем getInt(), если строка - getString().

Метод getContent() позволяет получить данные между тегами.

На главную страницу Processing

Реклама