Pastebin / Когда ты просто тормозишь

Ethicist 3 мая 2018
import javax.microedition.midlet.*;

public class Midlet extends MIDlet {
    public void startApp() {
        /* Для большей наглядности проверим функцию вот таким вот бредом
         * /path/to/file_WIDTHxHEIGHT.fakeextension.ext
         * getWidthFromPath(".splash_240x320.rar"); // WTF ?!!!11
		*/
    }

    /*
     * sample_file_128x128.ext
     * noextension_128x64
     * .hiddenfile_240x320
     * /path/to/.hidden/file
     */
    void getWidthFromPath(String target) {
        int w, h = 0;
        // lastIndexOf, так как в названии могут встречаться 'x', '.' и '_'
        int idx1 = target.lastIndexOf('_');
        int tdx2 = target.indexOf('.');
        int idx2 = target.lastIndexOf('.');
        // Сначала отделим название до последнего '_'
        String temp1 = target.substring(0, idx1).trim();
        // получим "x_stalker_x-zero11"
        // Теперь получим всё то, что за подчёркиванием
        // а также откинем расширение (или всё, что после точки)
        int len1 = temp1.length(); // Длина названия
        // len1+1 так, как считаем '_'
        String temp2 = "";
        if (idx2 == 0 || tdx2 == 0 || (temp1.indexOf('.') != 0)) {
            temp2 = target.substring(len1+1, target.length()).trim();
        } else if (idx2 == tdx2) { // в строке была одна точка
            temp2 = target.substring(len1+1, idx2).trim();
        } else if (idx2 != tdx2) { // в строке несколько точек
            if (temp1.indexOf('.') != 0) { // точка в названии? "/etc/.user/*.jpeg"
                temp2 = target.substring(len1+1, idx2).trim();
            } else { // какая-то хуита в расширении "*.rar.jpeg"
                temp2 = target.substring(len1+1, tdx2).trim();
            }
            // Если и то и другое, у части с размерами остаётся одно расширение
            int tmp_idx = temp2.indexOf('.');
            if (tmp_idx != 0) { // если есть, то убираем
                temp2 = temp2.substring(0, tmp_idx).trim();
            }
        }
        // Получим "13x36"
        // Осталось получить всё что до и после 'x'
        int len2 = temp2.length(); // длина части имени с размерами
        int idx3 = temp2.indexOf('x');
        String temp3 = temp2.substring(0, idx3).trim(); // 13
        String temp4 = temp2.substring(idx3+1, len2).trim(); //36
        w = Integer.parseInt(temp3);
        h = Integer.parseInt(temp4);
        System.out.println("w = " + w);
        System.out.println("h = " + h);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }
}

Смотрите также: