Как извлечь поле из строки с разделителем табуляции в Java

0

У меня есть метод c++ extractField который я хотел бы использовать для axtract некоторых полей из строки. Каждое поле, ограниченное '\t' хорошо работает в c++ может кто-то помочь мне с синтаксисом java. Я хотел бы применить метод method_ here что я имею:

    String ExtractField(String aline,int fieldnumber){
    Int seppos;
    String field;
    for (int fld = 0: fld< fieldnumber;fld++){
      seppos = aline.Pos('\t');
      field = aline.SubString(1,seppos-1);
      aline.delete(1.seppos);
    }
     If(seppos>0){return field;}
     else{return aline;}
    }
  • 0
    Мой C ++ недостаточно хорош, чтобы следить за тем, что именно вы делаете, но вы можете использовать String foo; foo.split('\t'); разделить значения табуляции
Теги:

3 ответа

2

Следующее находится в java, переписал его для вас;)

private String ExtractField(String aline, int fieldnumber)
{
    Integer seppos = new Integer();
    String field;
    for (int fld = 0; fld < fieldnumber; fld++)
    {
      seppos = aline.indexOf('\t');
      field = aline.substring(1, seppos - 1);
      //aline.delete(1.seppos); what does this do?
    }
     If(seppos > 0)
     {
         return field;
     }
     else
     {
         return aline;
     }
}
0

Использовать StringTokenizer

 StringTokenizer st = new StringTokenizer(aline, "\t");
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }
0

Я думаю, что это будет делать то, что вы хотите.

public String extractField(String aline, int fieldNumber) {
    String[] fields = aline.split("\t");
    //Illegal field NUmber.
    if (fieldNumber < 0 || fieldNumber >= fields.length) {
        return null;
    }
    return fields[fieldNumber];
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню