2015-09-11 4 views
1

Я делаю еще один тест кодирования ... просто проверяю некоторые из моих знаний, где я нажимаю шип. Я знаю, как разбить строку на половину String.substring бла-бла ... но как я разбиваюсь на трети? Я хочу сохранить до 3 строк, «firsthalf» «secondhalf» и «thirdhalf» кто-нибудь мне поможет?Разбиение строки на третье

(код до сих пор):

String text = "abspqrtnf"; 
    String firsthalf = text.substring(0, text.length()/3); 
    String secondhalf = text.substring(text.length()/3); 
    String thirdhalf = text.substring(text.length()/3); 

ответ

3

Продолжая с тем, как вы начали:

String text = "abspqrtnf"; 
int textLength = text.length(); 
String firsthalf = text.substring(0, textLength/3); 
String secondhalf = text.substring(textLength/3, text.length()/3 * 2); 
String thirdhalf = text.substring(text.length()/3 * 2); 
  • второйполовине должен начать где первойполовины закончилась, и 'идти' в два раза как долго
  • thirdhalf необходимо начать, где secondhalf закончил и перейти к концу
1
String text = "abspqrtnf"; 
String firsthalf = text.substring(0, (text.length()/3)); 
String secondhalf = text.substring(text.length()/3,(text.length()*2/3)); 
String thirdhalf = text.substring((text.length()*2/3),text.length()); 
System.out.println(secondhalf + " " +firsthalf + " "+ thirdhalf); 
1

Как сказано вам нужно принять решение о том, что делать, если длина строки не делится на 3 (усечение или более последняя строка), а также подходит для входной строки меньше 3. Предложите написание некоторых модульных тестов для покрытия эти варианты использования. Простой код ниже как альтернативное частичное решение.

String input = "abcdefghij"; 

    if(input.length() >= 3) 
    { 
     int singleStringLen = input.length()/3; 
     int index = singleStringLen; 

     System.out.println(input.substring(0, index)); 
     System.out.println(input.substring(index, (index += singleStringLen))); 
     // last string maybe longer if input string not divisible by 3 
     System.out.println(input.substring(index, input.length())); 
    } 
Смежные вопросы