Olá,
Pode tentar a lógica a seguir?
for (int i = 0; i < str.length(); i +=40) {
output.addValue(str.substring(i, Math.min(i +40, str.length())));
}
Avalados por :
Olá especialistas,
temos um requisito
- truncar a cadeia (combinação de palavras) em 40 caracteres. Portanto, temos 1 campo de entrada e 2 campos de saída
- no primeiro campo, precisamos verificar a última palavra se ela se encaixa nos 40 caracteres. Será adicionada ao primeiro campo, caso contrário, será movida para o segundo campo. (no segundo campo, também devemos aplicar a mesma lógica) e os 40 restantes também serão ajustados no segundo campo.
- por exemplo. "Por favor, visite a seção de Recursos da Comunidade" a contagem total para essa cadeia é 49. agora, o comprimento "Por favor, visite a seção de Recursos da Comunidade" é de 40. portanto, devemos ignorar "seção" e movê-la para o próximo campo.
portanto, o primeiro campo deve ir até "Por favor, visite a seção de Recursos da Comunidade" e o próximo campo deve ser preenchido como "para a seção"
Olá,
Pode tentar a lógica a seguir?
for (int i = 0; i < str.length(); i +=40) {
output.addValue(str.substring(i, Math.min(i +40, str.length())));
}
Atualizei o código para que seja um pouco mais breve 😊
Olá Anurag
Seu problema não é simples, de fato. A primeira solução que me ocorre é dividir a string com String.split na expressão regular \s+ (ou seja, espaço em branco). No entanto, String.split remove o delimitador, o que significa que todo o espaço em branco desaparece do seu texto. Não é bom.
No entanto, há uma alternativa. Dividir no limite de palavra \b preserva o espaço em branco e, de fato, resolve alguns casos específicos, como dividir em uma vírgula.
Aqui está um código de exemplo:
def splitLen = 40
def splitRegex = /\b/
def b = new StringBuilder()
originalString.split(splitRegex).each { s ->
if (b.length() + s.length() <= splitLen) {
// A string que está sendo construída pode conter esta subcadeia.
b.append(s)
} else {
// A string que está sendo construída não pode conter esta subcadeia.
output.addValue(b.toString())
b.setLength(0)
b.append(s)
}
}
if (b.length() > 0) {
output.addValue(b.toString())
}
Dividi a cadeia original ao longo do limite de palavra e, em seguida, percorro cada subcadeia resultante. Um StringBuilder acumula cada cadeia a ser incluída na saída. Existem dois casos a serem tratados:
Como observa sriprasadshivaramabhat , é claro, o código deve estar envolvido em uma função personalizada. Deixo isso para você.
Saudações,
Morten
Olá Anurag. Seria útil se você mostrasse o que tentou até agora. Saudações, Morten
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute