We need to extend the line to the designated symbols.



  • Anyway, there's a line with a set of symbols/words, we need to extend it over a given length. So far, all I've been able to do with myself is, like, a coding code.

        public static String stringAligning(String stringToAlign, int lengthAlignment) {
        String resultString = stringToAlign;
        StringBuilder sb = new StringBuilder(resultString);
    
    int temp = 1;
    if (stringToAlign.length() < lengthAlignment) {
        while (sb.length() < lengthAlignment) {
            for (int i = 1; i < sb.length(); i += temp) {
                if (resultString.charAt(i) == ' ') {
                    sb.insert(i, ' ');
                    temp = 2;
                }else {
                    temp = 1;
                }
    
            }
        }
    } else {
        System.out.println("lengthAlignment number is lower than line");
    }
    resultString = sb.toString();
    return resultString;
    

    }



  • public static String stringAligning(String stringToAlign, int lengthAlignment) {
        String fs = "%"+lengthAlignment+"s";
        return String.format(fs,stringToAlign);
    }
    

    If it's longer, it'll cut if it adds shorter.

    Leading gaps are added in the example. Use the line to add gaps "%-"+lengthAlignment+"s"

    Read. http://study-java.ru/uroki-java/formatirovanie-chisel-i-texta-v-java/ ♪

    It's not the right thing to do, but it's a complete set of steps.

        //Вводные данные
    
    String demo = "Пам парам     пам    пам     пурум"; //строка
    int strSize = 60; //длинна, на которую ее надо натянуть нормализовав пробелы
    
    //Разбиваем строку на массив слов.
    String[] norma = demo.split("\\s+");
    System.out.println(Arrays.toString(norma)); //[Пам, парам, пам, пам, пурум]
    
    //Вычисляем сумму символов всех слов 
    int chCount = 0;
    for (int i = 0; i < norma.length; i++) {
        chCount += norma[i].length();
    }
    System.out.println("chCount=" + chCount); //chCount=19
    
    // Между N словами помещается N-1 пробел. Вычислим длинну "целого" пробела
    int padSize = (strSize - chCount)/(norma.length-1);
    System.out.println("padSize=" + padSize); //padSize=10
    
    //Кроме "целых" пробелов у нас останется запас.
    int spaces = (strSize - chCount)%(norma.length-1);
    System.out.println("spaces=" + spaces); //spaces=1
    
    //Формируем строку
    String result = norma[0];
    for (int i = 1; i < norma.length; i++) {
        //Слово + пробелы перед ним. Так как будем испльзовать String.format
        int pad = padSize+norma[i].length();
        //Если есть пробелы в запасе +1
        if (spaces>0) {
            pad = pad+1;
            spaces--;
        }
        String sf = "%" + pad + "s";
        result += String.format(sf,norma[i]);
    }
    //Итого
    System.out.println("123456789+123456789+123456789+123456789+123456789+123456789+");
    System.out.println(result);
    //123456789+123456789+123456789+123456789+123456789+123456789+
    //Пам           парам          пам          пам          пурум
    


Log in to reply
 


Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2