Внесите todo ООН сердечный saludo, y gracias de ante mano, estoy intentando realizar ООН replaceAll
, para remplazar todos los espacios en blanco al inicio de una cadena de string por #
, соло pero la expresion я cambia el primer espacio de la cadena:
"detalleLinea": "" COMPROBANTE DE VENTA CON PIN "
Uso el código
row.setDetalleLinea(rs[2].replace("\"", "").replaceAll("^\\s+","#"));
y obtengo este resultado:
"detalleLinea": "#COMPROBANTE DE VENTA CON PIN ",
Поскольку ты только хочешь заменить начальное место, я считаю, что тогда использовать регулярное выражение вместе с методами String.replace*()
, чтобы этого добиваться не выполнимо, так как эти методы применяют выражение регулировать изнурительно на всей цепи. Это означает, что, хотя ты сможешь находить какой-то regex, который предположительно помогал бы тебе, всегда будет какой-то случай, в котором он не удастся.
В пользу такого мотива я предлагаю тебе осуществлять метод утилиты, которая помогала бы тебе с этим.
public static String replaceAllLeading(String str, char replacement) {
int length = str.length();
var strCharArr = str.toCharArray();
int i = 0;
while (i < length && Character.isWhitespace(strCharArr[i])) {
strCharArr[i] = replacement;
i++;
}
return String.copyValueOf(strCharArr);
}
Потом может делать нечто похожее
var str = " COMPROBANTE DE VENTA CON PIN ";
System.out.println(replaceAllLeading(str, '#'));
Полученные #############COMPROBANTE DE VENTA CON PIN
ГЛАЗ : Место в мишени конца не удаляется.
Ты мог бы делать это следующими формами, сначала самая элегантная с \s
больше место и в Вашем месте заменяя двумя #
или просто два непрерывных типа места, замененных двумя ##
:
String texto = " COMPROBANTE DE VENTA CON PIN ";
texto = texto.replaceAll("\\s ", "##"); //Así se ve mas elegante
//texto = texto.replaceAll(" ", "##"); //dos espacios, mismo resultado que arriba
System.out.println(texto);
С \s
ты находишь символ места (он включает место, табулировать, новая страница, новую линию, между другими), из-за того же самого, когда два типа места будут объединенными, он заменяется одним #
.
texto.replaceAll("\\s ", "#");
, Но существует маленькая проблема, в предыдущем, так как этот заменит 2 типа места, которые найдут объединенными с одним #
, ВВЕДЕННЫЕ
" COMPROBANTE DE VENTA CON PIN "
ПОЛУЧЕННЫЕ
" ####COMPROBANTE ПРОДАЖИ С PIN#### "
, Ввод обладает 8 типами места в мишени уже будьте в начале как в конце той же самой, но только их является 4 в каждую сторону.
Из-за того же самого количество места, был тем же самым, когда цепь будет форматироваться, я существую, так как для каждого двух места я заменил со второй ##
texto = texto.replaceAll("\\s ", "##");
texto = texto.replaceAll(" ", "##");
годом всем предыдущим:
, ВВЕДЕННЫЕ
" COMPROBANTE DE VENTA CON PIN "
ПОЛУЧЕННЫЕ
" ########COMPROBANTE ПРОДАЖИ С PIN######## "
Шрифт: регулярных Выражений