# 問題大雜燴 ###### tags: `NTU-CE` `Computer Programming` `Java` `Programming Language` 這裡擺放不知道怎麼分類但是蠻有趣的筆記,歡迎各方英雄好漢相繼補充。 ## 【題型】計算單字出現次數 * 消掉句點 直接看碼: ``` String text = "A string is a sequence of characters. Strings are frequently used in programming. In many languages, strings are treated as an array of characters, but in Java a string is treated as an object. This chapter introduces the classes for processing strings."; text = text.replaceAll("\\.", ""); text = text.toLowerCase(); String[] words = text.split(" "); ``` 解釋一下: replaceAll()的第一個引數要用正規表達式,例如「\\\\.」是句點的正規表達式,而這整個函式是用來把text裡面所有的句點都消去。當題目的輸入字串是由夾雜句點的句子所構成時就很好用。 正規表達式是什麼? 範例:Mr. Bon口吃(正規版解法) ``` import java.util.*; import java.util.regex.*; public class StammerTranslater { public static void main(String []args){ System.out.print(" Mr. Bon says, "); Scanner input = new Scanner(System.in); String s = input.nextLine(); s = Pattern.compile("\\A\"").matcher(s).replaceAll(""); s = Pattern.compile("\"\\Z").matcher(s).replaceAll(""); s = Pattern.compile("[a-zA-z]+-").matcher(s).replaceAll(""); System.out.println("Translating..."); System.out.println(s); } } ``` 正規表達式處理字串很強大,絕對值得一邊Google一邊閱讀推薦的書[1]。 * 你知道ArrayList<String>可以裝東西。 * 再讓你知道Map<String, Integer>可以一邊裝單字一邊裝數量。 ## 【JavaFX】Pane來Pane去的眉角 * Pane - getChildren().add() * StackPane - getChildren().add() * GridPane - add() * BorderPane - setCenter(), setBottom() ## 推薦的書 [1] J. E. F. Friedl (2006). Mastering Regular Expressions (3rd ed.). O'Reilly Media, Inc.