2015-08-22 3 views
3

Я ищу какой-либо существующий код или библиотеку в java или аналогичный язык для преобразования данных следующих (это не Java, а пользовательский язык)Java convert else {if {}} to elseif {}

if (i < 0) { 
    i = 0; 
} else { 
    if (i > 100) { 
     i = 100; 
    } 
} 

в ElseIf так:

if (i < 0) { 
    i = 0; 
} else if (i > 100) { 
    i = 100; 
} 

Этот код не является Java, но я хочу, чтобы преобразовать его с помощью Java.

Вот что я пытался acomplish это, но он не работает

 String elseB = "else {"; 
     int index = output.indexOf(elseB); 
     while (index != -1) { 
      output = output.substring(index + 1); 
      index = output.indexOf(elseB); 
      if (index != -1) { 
       int ifAt = index + elseB.length() + 1; 
       String elseStart = output.substring(ifAt).trim(); 
       if (elseStart.startsWith("if")) { 
        int closingBracket = findClosingBracket(
         output.toCharArray(), index); 
        int openingBracket = ifAt - 1; 
        String justBlock = output.substring(openingBracket, 
         closingBracket).trim(); 
        output = output.substring(0, openingBracket - 1) + justBlock + output.substring(closingBracket); 
       } 
      } 

     } 

более сложный пример будет превращаю-:

if (i == 1) { 

} else { 
    if (i == 2) { 

    } else { 
     if (i == 3) { 

     } else { 
      if (i == 4) { 

      } else { 
       if (i == 5) { 

       } else { 
        if (i == 6) { 

        } else { 
         if (i == 7) { 

         } else { 
          if (i == 8) { 

          } else { 
           if (i == 9) { 

           } else { 
            if (i == 10) { 

            } else { 
             if (i == 22) { 

             } else { 
              if (i == 11) { 

              } else { 
               if (i == 12) { 

               } else { 
                if (i == 25) { 

                } else { 
                 if (i == 13) { 

                 } else { 
                  if (i == 14) { 

                  } else { 
                   if (i == 15) { 

                   } else { 
                    if (i == 24) { 

                    } else { 
                     if (i == 16) { 

                     } else { 
                      if (i == 17) { 

                      } else { 
                       if (i == 18) { 

                       } else { 
                        if (i == 21) { 

                        } else { 
                         if (i == 19) { 

                         } else { 
                          if (i == 20) { 

                          } else { 
                           if (i == 23) { 

                           } else { 

                           } 
                          } 
                         } 
                        } 
                       } 
                      } 
                     } 
                    } 
                   } 
                  } 
                 } 
                } 
               } 
              } 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 

в этом

if (i == 1) { 

} else if (i == 2) { 

} else if (i == 3) { 

} else if (i == 4) { 

} else if (i == 5) { 

} else if (i == 6) { 

} else if (i == 7) { 

} else if (i == 8) { 

} else if (i == 9) { 

} else if (i == 10) { 

} else if (i == 22) { 

} else if (i == 11) { 

} else if (i == 12) { 

} else if (i == 25) { 

} else if (i == 13) { 

} else if (i == 14) { 

} else if (i == 15) { 

} else if (i == 24) { 

} else if (i == 16) { 

} else if (i == 17) { 

} else if (i == 18) { 

} else if (i == 21) { 

} else if (i == 19) { 

} else if (i == 20) { 

} else if (i == 23) { 

} else { 

} 
+0

Что именно вы имеете в виду? Какой-то плагин IDE? –

+0

@BorisTheSpider В любом случае, это вопрос без темы для инструмента или библиотеки, не так ли? – yshavit

+0

@yshavit да, конечно. Но я хотел бы знать, что ОП задает именно до того, как я проголосую, чтобы закрыть. Я больше склоняюсь к тому, что на стыке с этим неясно ... –

ответ

2

я предполагаю вы хотите изменить код, а не скомпилированный байт-код. Для этого вы бы посмотрели на замену текста. В зависимости от вашего редактора вы можете заменить все экземпляры этого текста инструкцией elif. Если ваш редактор может не сделать это, посмотрите в регулярные выражения. С помощью этих функций вы можете быстро изменить строки.

-2

Если вы пытаетесь проверить одно значение или различные условия, можете попытаться использовать switch statemenet вместо различных операторов if.

ie.

switch(i){ 
    case(i <= 0): 
     i=0; 
    case(i >= 100): 
     i=100; 
} 
+3

Это не работает на Java. Случаи должны быть постоянными и проверяться только на равенство. – yshavit

+0

@yshavit Как говорит автор, код для обработки «не является Java». Поэтому мы не знаем, работает ли он на его языке. – qqilihq

+1

@qqilihq Это редактирование (в вопросе) не было в то время, когда я сделал свой комментарий. С этим редактированием я бы внес поправки в свой комментарий к чему-то вроде: «не зная, что такое целевой язык, нет никаких оснований полагать, что этот синтаксис будет действительным в нем». В любом случае, этот ответ, похоже, не сокращает его. (Но для записи я не являюсь одним из лидеров.) – yshavit