2013-03-28 3 views
1
import java.io.*; 
import java.text.DecimalFormat; 
import java.text.NumberFormat; 

public class TrimTest{ 
public static void main(String args[]) throws IOException{ 
String[] token = new String[0]; 
String opcode; 
String strLine=""; 
String str=""; 
    try{ 
     // Open and read the file 
     FileInputStream fstream = new FileInputStream("a.txt"); 

     BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 

     //Read file line by line and storing data in the form of tokens 
     if((strLine = br.readLine()) != null){ 
      token = strLine.split(" ");// split w.r.t spaces 
          token = strLine.split(" "||",") // split if there is a space or comma encountered 
      } 
     in.close();//Close the input stream 
    } 
    catch (Exception e){//Catch exception if any 
     System.err.println("Error: " + e.getMessage()); 
    } 
    int i; 
    int n = token.length; 
    for(i=0;i<n;i++){ 
     System.out.println(token[i]); 
     } 
} 
} 

Если входной MOVE R1, R2, R3, Разделить относительно пробелом или запятой и сохранить его в и массив маркер [] Я хочу выходной как: MOVE R1 R2 R3Могу ли я это сделать - token = str.split ("" || ",");

Благодаря заранее.

+0

Вы не можете использовать логический оператор типа || внутри регулярного выражения, чтобы получить заданный вывод. –

+0

String.split принимает регулярное выражение как единственный параметр. Создайте регулярное выражение, соответствующее пробелу или запятой. –

+0

@gansai: Неправильно. в [Логические операторы в JavaDoc] (http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). – jlordo

ответ

0

Вы хотите

token = strLine.split("[ ,]"); // split if there is a space or comma encountered 

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

1

Пробег: token = strLine.split(" |,").

split использует regex как аргумент и or в regex is |. Вы можете также использовать character class как [\\s,], равная \\s|, и означает \\s = белый цвет пространства (как обычный пробел, табуляция, новая строка знака) или запятая».

0

изменить его на strLine.split(" |,"), или, возможно, даже strLine.split("\\s+|,").

+0

token = strLine.split ("|"); Когда я делаю это, массив сохраняет некоторые из нулевых значений. Как я могу сделать условие, чтобы оно не сохраняло нулевые значения в токене []? – CodeDevotion

Смежные вопросы