例如,輸入將是這樣的:如何獲得雙引號之間的字符串,字符串中的Java中
AddItem rt456 4 12 BOOK 「File Structures」 「Addison-Wesley」 「Michael Folk」
,我想用掃描儀讀取所有,並把它放在一個陣列英寸
喜歡:
info[0] = rt456
info[1] = 4
..
..
info[4] = File Structures
info[5] = Addison-Wesley
所以,我怎麼能得到引號之間的字符串?
編輯:我的代碼 - >
public static void main(String[] args) {
String command;
String[] line = new String[6];
Scanner read = new Scanner(System.in);
Library library = new Library();
command = read.next();
if(command.matches("AddItem"))
{
line[0] = read.next(); // Serial Number
line[1] = read.next(); // Shelf Number
line[2] = read.next(); // Shelf Index
command = read.next(); // Type of the item. "Book" - "CD" - "Magazine"
if(command.matches("BOOK"))
{
line[3] = read.next(); // Name
line[4] = read.next(); // Publisher
line[5] = read.next(); // Author
Book yeni = new Book(line[0],Integer.parseInt(line[1]),Integer.parseInt(line[2]),line[3],line[4],line[5]);
}
}
}
所以我用read.next沒有引號來讀取字符串的一部分。
解決的使用正則表達式AS
read.next("([^\"]\\S*|\".+?\")\\s*");
閱讀本書之後,將分隔符更改爲'「'或者使用一個使用空格作爲分隔符的CSV解析器 –
'新的StreamTokenizer(新的StringReader(mystring))'應該有所訣竅 –
是字段的數量,這些字段的位置每次都一樣嗎? – JohnnyAW