我正在與StreamTokenizer
解析文本,我需要確保 某些標記之間有空格。例如,「5 + 5」是非法的,但「5 + 5」是有效的。我不知道StreamTokenizer
那麼好;我讀了API,但找不到任何東西來幫助我。我怎樣才能做到這一點?如何確保StreamTokenizer與特定令牌之間有空白?
0
A
回答
1
您必須將空格設置爲「普通字符」。這意味着它們將作爲標記自行返回,但不會摺疊到其他標記中。例如:
StreamTokenizer st = new StreamTokenizer(new StringReader("5 + 5"));
st.ordinaryChar(32);
int tt = st.nextToken(); // tt = TT_NUMBER, st.nval = 5
tt = st.nextToken(); // tt = 32 (' ')
tt = st.nextToken(); // tt = 43 ('+')
tt = st.nextToken(); // tt = 32 (' ')
tt = st.nextToken(); // tt = TT_NUMBER, st.nval = 5
tt = st.nextToken(); // tt = TT_EOF
不幸的是,您將不得不在分析器中處理空白標記。我建議你滾動你自己的tokenizer。除非你做的事快而骯髒,否則StreamTokenizer幾乎總是錯誤的選擇。
0
考慮使用Scanner
來代替。例如爲:
String input = "5 + 5";
Scanner scanner = new Scanner(input).useDelimiter(" ");
int num1 = scanner.nextInt();
String op = scanner.next();
int num2 = scanner.nextInt();
這是假定像"5+5"
或"5 + 5"
輸入一個簡化的例子。您應該隨時檢查scanner.hasNext()
,也許在where
循環中處理更復雜的輸入。
相關問題
- 1. 如何保留標籤與重氮之間的空白?
- 2. 如何確保與div和同位素沒有空白
- 3. 保留xsl:sort'd節點之間的空白
- 4. 如何刪除div之間的空白?
- 5. 行與MigLayout之間的空白
- 6. 如何確保瀏覽器與.submit()之間沒有問題()
- 7. 如何確保標籤之間的空間MPAndroidChart
- 8. 門衛/ oauth /令牌 - 空白回覆
- 9. StringTokenizer和令牌'空間'
- 10. 如何保存所有令牌?
- 11. 如何確定現有的表空間
- 12. 如何定義具有特定格式的令牌
- 13. 空白空間與框架
- 14. 如何解釋CSS與圖像之間的空白區域?
- 15. 如何減少行標題之間的空白空間
- 16. 如何給列表視圖的行之間的空白空間?
- 17. 如何擺脫容器之間的額外空白空間
- 18. 如何刪除表單元素之間的空白空間
- 19. 如何減少兩個div元素之間的空白空間
- 20. Python RE:如何忽略標籤之間的空白空間?
- 21. 垂直排序對象與它們之間的空白空間
- 22. 如何確保我的網頁和瀏覽器邊緣之間沒有空間?
- 23. 確保在列的兩側和列之間有空間
- 24. 如何確保我有一個「空白」的MVC主頁請求
- 25. 如何保護.ASPXAUTH令牌
- 26. 保護與認證令牌
- 27. tablix行之間的空白
- 28. CSS - 如何刪除錨定圖像之間的空白
- 29. 如何讓lxml的解析器保留根元素之外的空白空間?
- 30. 如何正確指定文字間的空白
StringTokenizer更容易使用。 – 2011-03-29 21:40:32