Всем привет, недавно задавал этот вопрос, мне помог @Sergey Gornostaev, но вот тестировал, и нашел проблемку, когда в строке не числа, а слова или пустые поля, данные перестают выводится на страницу и выдается ошибка java.lang.NullPointerException at Bean.TriadBean.setChunks(TriadBean.java:46), может кто знает как исправить?
Вот пример бина
public class TriadBean {
private String[] chunks;
private String delimiter;
private int size;
public String getDelimiter() {
return delimiter;
}
public void setDelimiter(String delimiter) {
if (delimiter == null || delimiter.isEmpty())
throw new IllegalArgumentException("Разделитель должен быть установлен!");
this.delimiter = delimiter;
}
public Integer getSize() {
return size;
}
public void setSize(Integer size) {
if (size < 1)
throw new IllegalArgumentException("Размер группы должен быть положительным числом!");
this.size = size;
}
public void setChunks(String src) {
if (delimiter == null || size == 0)
throw new IllegalStateException("Не установлен разделитель или размер группы!");
int chunksCount = (int) Math.ceil((double) src.length() / (double) size);
chunks = new String[chunksCount];
for (int i = 0; i < chunks.length; i++)
chunks[i] = src.substring(i * size, Math.min(src.length(), (i + 1) * size));
}
public String getChunks() {
if (chunks == null)
return "";
return Arrays.stream(chunks)
.map(String::trim)
.collect(Collectors.joining(delimiter));
}
}
На jsp делал так
<jsp:useBean id="grouper" class="Bean.TriadBean">
<jsp:setProperty name="grouper" property="delimiter" value="-"/>
<jsp:setProperty name="grouper" property="size" value="3"/>
</jsp:useBean>
<c:set target="${grouper}" property="chunks" value="${vp44150sql.nc}" />
<c:out value="${grouper.chunks}"/>
<jsp:useBean id="grouper" class="Bean.TriadBean">
<jsp:setProperty name="grouper" property="delimiter" value="-"/>
<jsp:setProperty name="grouper" property="size" value="3"/>
</jsp:useBean>
<c:if test="${not empty vp44150sql.nc}">
<c:set target="${grouper}" property="chunks" value="${vp44150sql.nc}" />
<c:out value="${grouper.chunks}"/>
</c:if>
Используйте regExp
String text = "ladhjsfdkjsfhlakjsdhe331.235145v1hj2v34j1v34";
text = text.replaceAll("(.{3})","$1 ");
System.out.println(text);
//lad hjs fdk jsf hla kjs dhe 331 .23 514 5v1 hj2 v34 j1v 34
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники