Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Форматирование строк






Для создания форматированного текстового вывода предназначен класс java.util.Formatter. Этот класс обеспечивает преобразование формата, позволяющее выводить числа, строки, время и даты в любом необходимом разработчику виде.

В классе Formatter объявлен метод format(), который преобразует переданные в него параметры в строку заданного формата и сохраняет в объекте типа Formatter. Аналогичный метод объявлен у классов PrintStream и PrintWriter.

Кроме того у этих классов объявлен метод printf() с параметрами, идентичными параметрам метода format(), который осуществляет форматированный вывод в поток, тогда как метод format() сохраняет изменения в объекте типа Formatter. Таким образом, метод printf() автоматически использует возможности класса Fomatter и подобен функции printf() языка С.

Класс Formatter преобразует двоичную форму представления данных в форматированный текст. Он сохраняет форматированный текст в буфере, содержимое которого можно получить в любой момент. Можно предоставить классу Formatter автоматическую поддержку этого буфера либо задать его явно при создании объекта. Существует возможность сохранения буфера класса Formatter в файле.

Для создания объекта класса существует более десяти конструкторов. Ниже приведены наиболее употребляемые:

Formatter()

Formatter(Appendable buf)

Formatter(Appendable buf, Locale loc)

Formatter(String filename) throws FileNotFoundException

Formatter(String filename, String charset) throws FileNotFoundException,

UnsupportedEncodingException

Formatter(File outF) throws FileNotFoundException

Formatter(OutputStream outStrm)

Formatter(PrintStream printStrm)

В приведенных образцах buf задает буфер для форматированного вывода.

Если параметр buf равен null, класс Formatter автоматически размещает объект типа StringBuilder для хранения форматированного вывода. Параметр loc определяет региональные и языковые настройки. Если никаких настроек не задано, используются настройки по умолчанию. Параметр filename задает имя файла, который получит форматированный вывод. Параметр charset определяет кодировку. Если она не задана, используется кодировка, установленная по умолчанию. Параметр outF передает ссылку на открытый файл, в котором будет храниться форматированный вывод. В параметре outStrm передается ссылка на поток вывода, который будет получать отформатированные данные. Если используется файл, выходные данные записываются в файл.

Некоторые методы класса:

Formatter format(Locale loc, String fmtString, Object…args) — форматирует аргументы, переданные в аргументе переменной длины args, в соответствии со спецификаторами формата, содержащимися в fmtString. При форматировании используются региональные установки, заданные в lос. Возвращает вызывающий объект. Существует перегруженная версия метода без использования локализации;

Locale locale() — возвращает региональные установки вызывающего объекта;

Appendable out() — возвращает ссылку на базовый объект-приемник для выходных данных;

void flush() — переносит информацию из буфера форматирования и производит запись в указанное место выходных данных, находящихся в буфере. Метод чаще всего используется объектом класса Formatter, связанным с файлом;

void close() — закрывает вызывающий объект класса Formatter, что приводит к освобождению ресурсов, используемых объектом. После закрытия объекта типа Formatter он не может использоваться повторно. Попытка использовать закрытый объект приводит к генерации исключения типа FormatterClosedException.

При форматировании используются спецификаторы формата:

Также возможны спецификаторы с заглавными буквами: %A (эквивалентно %a). Форматирование с их помощью обеспечивает перевод символов в верхний регистр.

/* # 8 # форматирование строки при помощи метода format () # SimpleFormatString.java */

package by.bsac.format;

import java.util.Formatter;

public class SimpleFormatString {

public static void main(String[ ] args){

Formatter f = new Formatter(); // объявление объекта

// форматирование текста по формату %S, %c

f.format(" This %s is about %n%S %c", " book", " java", '8');

System.out.print(f);

}

}

В результате выполнения этого кода будет выведено:

This book is about

JAVA 8

Все спецификаторы для форматирования даты и времени могут употребляться только для типов long, Long, Calendar, Date.

В таблице приведены некоторые из спецификаторов формата времени и даты.

 

Спецификатор точности применяется только в спецификаторах формата %f, %е, %g для данных с плавающей точкой и в спецификаторе %s — для строк. Он задает количество выводимых десятичных знаков или символов. Например, спецификатор %10.4f выводит число с минимальной шириной поля 10 символов и с четырьмя десятичными знаками. Принятая по умолчанию точность равна шести десятичным знакам. Примененный к строкам спецификатор точности задает максимальную длину поля вывода.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал