2013-11-21 7 views
1

Я пытаюсь взять одну целую строку и напечатать каждый ее раздел по-разному с помощью индекса. Я пытался что-то вроде этого ...Разделение строки с индексом

String example = "one, two, three, four" 
int comma = example.indexOf(',' , 0); 
    String output = example.substring(comma); 
    System.out.println(output); 

Печатается

,two,three,four 

Я не могу заставить его сделать что-нибудь еще ...

+1

Вы должны использовать 'loop'. –

ответ

2

только с помощью indexOf мето d с loop Вы можете распечатать все отдельные String через запятую ,. Вам не нужно split regex. Посмотрите на следующий пример.

String str = "one, two, three, four"; 
    int lastIndex = 0; 
    int firstIndex=0; 
    while (lastIndex != -1) { 

     lastIndex = str.indexOf(',', lastIndex); 

     if (lastIndex != -1) { 
      System.out.print(str.substring(firstIndex, lastIndex)); 

      if(lastIndex==str.lastIndexOf(',')){ 
      System.out.print(str.substring(lastIndex)); 
      } 
      lastIndex += 1; 
     } 

     firstIndex=lastIndex; 
    } 
    System.out.println(); 

Выход: один два три четыре

+0

Спасибо! Я просто добавил \ n, чтобы создать новые строки. –

0

Почему бы вам не попробовать с split()?

String example = "one, two, three, four" 
String[] temp = example.split(","); 
for(int i=0;i<temp.length; i++){ 
System.out.println(temp[i]); 
} 
+0

Спасибо, но я должен использовать метод indexOf. –

0

В классе String есть удобный метод. Sting#split.

Вы просто разделили свою строку запятой, это все, что вам нужно.

String example = "one, two, three, four"; 
String[] split = example.split(","); 
for (String string : split) { 
    System.out.println(string); 
} 

раскол метод возвращает array из разделенных и струны, и нам нужно просто распечатать их.

Примечание стороны: я использовал Enhanced for loop to iterate

+0

Спасибо, но я должен использовать метод indexOf. –

+0

Использование 'indexOf' с циклом также можно разделить' String'. – Masudul

+0

@Masud Да, у одной проблемы может быть множество возможных решений. I no where write that * not possible * –

0

использование разделенной

String example = "one, two, three, four"; 
    for(String i:example.split(",")){ 
     System.out.println(i); 

    } 

Использование IndexOf

String example = "one, two, three, four"; 
    String output; 
    String temp = example; 
    int gIndex = 0; 
    int len = example.length(); 
    example += ","; 
    for(int i=0 ; i<len;i+=gIndex+1){ 
     gIndex = example.indexOf(","); 
     output = example.substring(0,gIndex); 
     System.out.println(output); 
     example = example.replace(output, "").replaceFirst(",", ""); 
    } 
    example = temp; 
+0

Спасибо, но я должен использовать метод indexOf. –

+0

@ user2880779 Отредактировано .... –

0

нравится этот

String example = "one, two, three, four" 
String[] output = example.split(','); 
for(String s:output){ 
    System.out.println(s); 
} 
+0

Спасибо, но я должен использовать метод indexOf. –

2

попробовать это:

String example = "one, two, three, four"; 

for (int i = example.indexOf(", "); i != -1; i = example.indexOf(", ")) { 
    System.out.println(example.substring(0, i)); 
    example = example.substring(i + 2); 
} 
System.out.println(example); 

, если вам нравится рекурсии:

public static void main(String[] args) { 
    String example = "one, two, three, four"; 
    printSections(example); 
} 

public static void printSections(String word) { 
    int i = word.indexOf(", "); 
    if (i == -1) System.out.println(word); 
    else { 
     System.out.println(word.substring(0, i)); 
     printSections(word.substring(i + 2)); 
    } 
} 
Смежные вопросы