/* package whatever; // don't place package name! */
 
import java.util.*;
import java.lang.*;
import java.io.*;
 
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
        if (rawValue == null || rawValue.isEmpty()) {
            return "";
        }
        // Проверяем формат массива: 2[length1]value1[length2]value2
        if (!rawValue.startsWith("2[") || rawValue.length() < 5) {
            return rawValue;
        }
        try {
            int pos = 1;
 
            for (int i = 0; i < 2; i++) {
                // Ищем открывающую скобку
                int openBracket = rawValue.indexOf('[', pos);
                if (openBracket == -1) break;
 
                // Ищем закрывающую скобку
                int closeBracket = rawValue.indexOf(']', openBracket);
                if (closeBracket == -1) break;
 
       			System.
out.
println("openBracket=" + openBracket
);        			System.
out.
println("closeBracket=" + closeBracket
);  
                // Парсим длину элемента
                String lengthStr 
= rawValue.
substring(openBracket 
+ 1, closeBracket
);                 System.
out.
println(lengthStr
);                 if (lengthStr.isEmpty()) {
                    // Пустая длина - значит элемент пустой
                    elements[i] = "";
                    pos = closeBracket + 1;
                    continue;
                }
 
                int length;
                try {
                    length 
= Integer.
parseInt(lengthStr
);                    break;
                }
                // Извлекаем значение
                int start = closeBracket + 1;
                int end = start + length;
				System.
out.
println("start = " + start
); 				System.
out.
println("end = " + end
);                 if (end > rawValue.length()) {
                    elements[i] = rawValue.substring(start);
                    break;
                }
 
                elements[i] = rawValue.substring(start, end);
                pos = end;
            }
 
 
            // Если оба элемента распарсились
            if (elements[0] != null && elements[1] != null) {
                return elements[0] + " - " + elements[1];
            }
            // Если что-то пошло не так, возвращаем как обычный параметр
        }
 
        return rawValue;
    }
	{
		String s 
= "2[158]1; Debit; 22618000460010339500;  50000 1; Credit; 23118000300001150500;  50000 2; Debit; 23118000300001150500;  50000 2; Credit; 22618000760010340500;  50000 [17]Данные для отчета";  
		System.
out.
println(parseParameter
(s
)); 	}
}