使用Scanner類從開始/中間程序員的控制檯讀取輸入的替代方法有哪些?用於控制檯輸入的Java的掃描儀類的替代方案
我開始看昨天,谷歌帶我到一些關於自然語言處理和一些自然語言處理工具包列表的文章。我發現的列表沒有很好地註釋,並且主題非常快速。
我問,因爲我開始想要製作一個自定義的分隔符列表,例如「+」| 「 - 」| 「*」| 「/」。這似乎不可能使用掃描儀。
使用Scanner類從開始/中間程序員的控制檯讀取輸入的替代方法有哪些?用於控制檯輸入的Java的掃描儀類的替代方案
我開始看昨天,谷歌帶我到一些關於自然語言處理和一些自然語言處理工具包列表的文章。我發現的列表沒有很好地註釋,並且主題非常快速。
我問,因爲我開始想要製作一個自定義的分隔符列表,例如「+」| 「 - 」| 「*」| 「/」。這似乎不可能使用掃描儀。
我開始懷疑有關使分隔符的自定義列表,如 「+」 | 「 - 」| 「*」| 「/」。這似乎不可能使用掃描儀。
你想達到這樣的目的嗎?
String text="Some text +with -delimiters *described /above";
Scanner in=new Scanner(text);
in.useDelimiter("\\+|\\-|\\*|/"); // +,-,* are metacharacters in regex
// to escape its special meaning we need
// to use "\\" before each of them
int counter=0;
while(in.hasNext())
System.out.println(counter++ +") "+ in.next());
輸出
0) Some text
1) with
2) delimiters
3) described
4) above
是的,那正是我想要做的。因此,您不必在useDelimiter()參數中包含任何內容,以指示除了列出的內容外,您還希望它繼續使用空格? –
@e。inglewood不確定你的意思是「繼續使用空格」。要在分隔符中包含空格,你可以在'\\ s *(\\ + | \\ - | \\ *//)\\ s *'(*表示0或更多的元素在它之前) – Pshemo
解決了這個問題。非常感謝你。 –
你可以用BufferedReaders和InputStreams來完成。
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
你打算創建一個自定義列表分隔符或它們的自定義*組合*因爲Scanner允許你指定你自己的分隔符模式。但是這聽起來像你想要分隔符是上下文敏感的? – Perception
不確定你真正想要什麼,但是你可以使用正則表達式,indexOf(),tokenizer等來分割字符串。 – PhiLho
@Perception - 是的,上下文相關,這樣如果有人輸入一個簡單的數學表達式,如「3 + 5 「或」4 * 2「,我可以使用掃描儀(或其他)解析它。 –