Ограничение количества символов в строке и измельчение остальных
Мне нужно создать сводную таблицу в конце журнала с некоторыми значениями, которые
получаются внутри класса. Стол должен быть напечатан в фиксированной ширине
формат. У меня есть код, чтобы сделать это уже, но мне нужно ограничить строки,
удваивает и присваивает размер фиксированной ширины, который жестко закодирован в коде.
Итак, предположим, что я хочу напечатать таблицу с фиксированной шириной с помощью
int,string,double,string
int,string,double,string
int,string,double,string
int,string,double,string
and the fixed widths are: 4, 5, 6, 6.
Если значение превышает эту ширину, последние символы должны быть обрезаны. Так
например:
124891, difference, 22.348, montreal
строки, которые должны быть напечатаны, должны быть:
1248 diffe 22.348 montre
Я думаю, что мне нужно что-то сделать в конструкторе, который заставляет
строка не должна превышать определенное количество символов. я, вероятно
переведите двойники и ints в строку, поэтому я могу обеспечить максимальную ширину
требования.
Я не знаю, какой метод это делает, или если строка может быть создана для
ведите себя так. Использование форматирования помогает
исправлено с форматированием для печати строки, но на самом деле это не
которые превышают максимальную длину.
Ответы
Ответ 1
Используйте это, чтобы отрезать ненужные символы:
String.substring(0, maxLength);
Пример:
String aString ="123456789";
String cutString = aString.substring(0, 4);
// Output is: "1234"
Чтобы убедиться, что вы не получаете исключение IndexOutOfBoundsException, когда строка ввода меньше ожидаемой длины, сделайте следующее:
int maxLength = (inputString.length() < MAX_CHAR)?inputString.length():MAX_CHAR;
inputString = inputString.substring(0, maxLength);
Если вы хотите, чтобы ваши целые числа и парные разряды имели определенную длину, я предлагаю вам использовать NumberFormat для форматирования ваших чисел вместо того, чтобы отрезать их строковое представление.
Ответ 2
Вы также можете использовать String.format("%3.3s", "abcdefgh")
. Первая цифра - это минимальная длина (строка будет дополнена слева, если она короче), вторая цифра - максимальная длина, и строка будет обрезана, если она длиннее. Так
System.out.printf("'%3.3s' '%3.3s'", "abcdefgh", "a");
будет производить
'abc' ' a'
(Вы можете удалить цитаты, очевидно).
Ответ 3
Вы можете использовать статический метод Apache Commons StringUtils.substring(String str, int start, int end)
, который также является нулевым.
См. Http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#substring%28java.lang.String,%20int,%20int% 29
и http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/src-html/org/apache/commons/lang/StringUtils.html#line.1961
Ответ 4
Для удобства чтения я предпочитаю это:
if (inputString.length() > maxLength) {
inputString = inputString.substring(0, maxLength);
}
по принятому ответу.
int maxLength = (inputString.length() < MAX_CHAR)?inputString.length():MAX_CHAR;
inputString = inputString.substring(0, maxLength);
Ответ 5
Вы можете легко достичь этого, используя
shortString = longString.substring(0, Math.min(s.length(), MAX_LENGTH));
Ответ 6
В идеале вы должны стараться не изменять внутреннее представление данных для создания таблицы. В чем проблема с String.format()? Он вернет вам новую строку с требуемой шириной.
Ответ 7
Решение может быть java.lang.String.format("%" + maxlength + "s", string).trim()
, например:
int maxlength = 20;
String longString = "Any string you want which length is greather than 'maxlength'";
String shortString = "Anything short";
String resultForLong = java.lang.String.format("%" + maxlength + "s", longString).trim();
String resultForShort = java.lang.String.format("%" + maxlength + "s", shortString).trim();
System.out.println(resultForLong);
System.out.println(resultForShort);
вывод:
Any string you want w
Anything short
Ответ 8
Если вы просто хотите максимальную длину, используйте StringUtils.left
! Не нужны if
условия или ternary?:
int maxLength = 5;
StringUtils.left(string, maxLength);
Выход:
null -> null
"" -> ""
"a" -> "a"
"abcd1234" -> "abcd1"
Left
Документация