Avatar billede bvirk Guru
17. februar 2017 - 14:39 Der er 2 kommentarer og
1 løsning

substring uden IndexOutOfBoundsException

Har Java ikke en "kast IKKE exception - afkort til max længde" substring(beg,end) eller andet?

Skal man absolut ud i indeks gymnastik:

final int maxTitleLen=15;
int titleLen=f.getName().length() > maxTitleLen ? maxTitleLen : f.getName().length();
ret +="<title>"+f.getName().substring(0,titleLen)+"</title>" +
...


eller stadig lidt tungt, tvingende til gentagelse af koblede udtryk:
import static utils.Oraclerounds.maxStringLength;
...
ret +="<title>"+f.getName().substring(0,maxStringLength(f.getName(),15))+"</title>" +
...


givet eksempelvis: Oraclerounds.java

package utils;

public class Oraclerounds {
    public static int maxStringLength(String s, int wish) {
        return s.length() <= wish ? s.length() : wish;
    }
}
Avatar billede arne_v Ekspert
17. februar 2017 - 15:04 #1
Jeg mener ikke der er en i Java standard bibliotek.

Jeg kan ihvertfald ikke lide:

String.format(|%." + MAX_TITLE_LEN + "s", f.getName());

(jeg kan ikke faa * til at virke)

Jeg ville nok bruge:

f.getName().substring(0, Math.min(f.getName().length(),MAX_TITLE_LEN))
Avatar billede arne_v Ekspert
17. februar 2017 - 15:06 #2
ignorer den |
det er en leftover
Avatar billede bvirk Guru
17. februar 2017 - 15:50 #3
Det er jo både en standard funktion og retvisende med Math.min. Så er der ikke noget jeg har overset - man er nød til at anvende strengen som parameter endnu en gang.
Tak for det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester