Rumah >Java >javaTutorial >Cari jenis data input pengguna menggunakan ungkapan biasa dalam Java
Dalam pengaturcaraan Java, menentukan jenis maklumat yang dimasukkan oleh pelanggan boleh menjadi tugas biasa, terutamanya apabila membuat aplikasi yang memerlukan kelulusan atau pemprosesan maklumat. Ungkapan biasa atau ungkapan biasa ialah alat yang berkesan untuk mengenal pasti reka bentuk rentetan dan mengira kategori maklumat. Artikel ini mengkaji pendekatan unik untuk menggunakan ungkapan standard dalam Java untuk mencari jenis maklumat yang dimasukkan oleh klien.
Struktur bahasa ungkapan biasa dalam Java adalah berdasarkan pakej java.util.regex. Ia menyediakan kelas seperti Reka Bentuk dan Matcher untuk mengendalikan reka bentuk ekspresi biasa dan melaksanakan operasi penyelarasan.
Untuk menggunakan ungkapan biasa dalam Java, kita perlu mencipta corak ungkapan biasa menggunakan kelas Reka Bentuk. Corak ini mewakili corak yang diingini yang perlu kita padankan. Kami akan menggunakan pelbagai aksara dan operator yang dipratentukan dalam ungkapan biasa untuk menentukan corak.
Setelah reka bentuk ditentukan, kami mencipta masalah Matcher dengan memanggil strategi matcher() pada reka bentuk. Matcher membolehkan kami menggunakan reka bentuk pada rentetan input tertentu dan melaksanakan operasi yang diselaraskan.
Buat corak ungkapan biasa untuk setiap jenis data (cth. integer, terapung, rentetan, dll.).
Gunakan kelas Corak untuk menyusun corak ungkapan biasa.
Buat objek Matcher menggunakan corak terkumpul dan rentetan input pengguna.
Gunakan kaedah matches() kelas Matcher untuk menyemak sama ada rentetan input sepadan dengan corak jenis data tertentu.
Ulang proses ini sehingga corak jenis data yang sepadan ditemui.
import java.util.regex.*; public class DataTypeFinder { public static void main(String[] args) { String userInput = "42.5"; // Example user input // Define regex patterns for data types String integerPattern = "\d+"; String floatPattern = "\d+\.\d+"; String stringPattern = "[a-zA-Z]+"; // Compile the patterns Pattern integerRegex = Pattern.compile(integerPattern); Pattern floatRegex = Pattern.compile(floatPattern); Pattern stringRegex = Pattern.compile(stringPattern); // Create Matcher objects for each pattern Matcher integerMatcher = integerRegex.matcher(userInput); Matcher floatMatcher = floatRegex.matcher(userInput); Matcher stringMatcher = stringRegex.matcher(userInput); // Check for matches if (integerMatcher.matches()) { System.out.println("Input is an integer."); } else if (floatMatcher.matches()) { System.out.println("Input is a float."); } else if (stringMatcher.matches()) { System.out.println("Input is a string."); } else { System.out.println("Unable to determine the data type."); } } }
Input is a float.Terjemahan bahasa Cina bagi
Dalam pendekatan ini, kami mencipta corak ungkapan biasa yang berasingan untuk setiap jenis data yang ingin kami kenali: integer, apungan dan rentetan. Corak ini disusun menggunakan kelas Corak.
Kami kemudian membandingkan objek Matcher untuk setiap corak, menghantar rentetan input pelanggan kepada setiap pemadan. Kami menggunakan kaedah matches() untuk menyemak sama ada rentetan input sepadan dengan corak jenis data tertentu.
Jika koordinat ditemui, kami mencetak pengisihan maklumat perbandingan. Jika tidak, jika koordinat tidak dijumpai, kami mencetak mesej ralat yang mengatakan bahawa jenis data tidak dapat ditentukan.
Gunakan operator OR (|) untuk menggabungkan corak semua jenis data menjadi satu corak ungkapan biasa.
Gunakan mod kompilasi kelas Corak.
Buat objek Matcher menggunakan corak terkumpul dan rentetan input pengguna.
Gunakan kaedah matches() kelas Matcher untuk menyemak sama ada rentetan input sepadan dengan mana-mana corak jenis data.
import java.util.regex.*; public class DataTypeFinder { public static void main(String[] args) { String userInput = "42.5"; // Example user input // Define regex pattern for all data types String dataTypePattern = "\d+|\d+\.\d+|[a-zA-Z]+"; // Compile the pattern Pattern regex = Pattern.compile(dataTypePattern); // Create a Matcher object Matcher matcher = regex.matcher(userInput); // Check for matches if (matcher.matches()) { System.out.println("Input is of a recognized data type."); } else { System.out.println("Unable to determine the data type."); } } }
Input is of a recognized data type.Terjemahan bahasa Cina bagi
Dalam kaedah ini, kami menggunakan operator OR (|) untuk mencipta satu corak ungkapan biasa yang menggabungkan corak daripada semua jenis data. Dengan cara ini kita boleh memadankan mana-mana corak dengan rentetan yang dimasukkan oleh pengguna.
Kami menggunakan kelas Reka Bentuk untuk menyusun reka bentuk dan mencipta objek Matcher menggunakan reka bentuk yang disusun dan rentetan input pelanggan. Kami kemudian menggunakan kaedah matches() objek Matcher untuk menyemak sama ada rentetan input sepadan dengan mana-mana corak jenis data.
Jika koordinat ditemui, kami mencetak mesej yang menunjukkan bahawa input adalah jenis maklumat yang diiktiraf. Selain itu, jika koordinat tidak ditemui, kami mencetak mesej ralat yang menyatakan bahawa jenis data tidak dapat ditentukan.
Buat corak ungkapan biasa untuk menyemak corak tertentu yang dikaitkan dengan setiap jenis data.
Gunakan mod kompilasi kelas Corak.
Gunakan kaedah find() kelas Matcher untuk mencari sama ada sebarang corak jenis data wujud dalam rentetan input pengguna.
import java.util.regex.*; public class DataTypeFinder { public static void main(String[] args) { String userInput = "42.5"; // Example user input // Define regex pattern for each data type String integerPattern = "\d+"; String floatPattern = "\d+\.\d+"; String stringPattern = "[a-zA-Z]+"; // Compile the patterns Pattern integerRegex = Pattern.compile(integerPattern); Pattern floatRegex = Pattern.compile(floatPattern); Pattern stringRegex = Pattern.compile(stringPattern); // Create Matcher objects for each pattern Matcher integerMatcher = integerRegex.matcher(userInput); Matcher floatMatcher = floatRegex.matcher(userInput); Matcher stringMatcher = stringRegex.matcher(userInput); // Check for matches if (integerMatcher.find()) { System.out.println("Input contains an integer."); } if (floatMatcher.find()) { System.out.println("Input contains a float."); } if (stringMatcher.find()) { System.out.println("Input contains a string."); } if (!integerMatcher.find() && !floatMatcher.find() && !stringMatcher.find()) { System.out.println("Unable to determine the data type."); } } }
Input contains an integer. Input contains a float.Terjemahan bahasa Cina bagi
Dalam pendekatan ini, kami mencipta corak ungkapan biasa yang berasingan untuk setiap jenis data dan menyusunnya menggunakan kelas Corak.
Kami kemudian membandingkan objek Matcher untuk setiap corak, menghantar rentetan input pelanggan kepada setiap pemadan. Daripada menggunakan kaedah matches(), kami menggunakan kaedah find() kelas Matcher untuk mencari kehadiran sebarang corak jenis data dalam rentetan input.
Jika koordinat ditemui, kami mencetak mesej yang menunjukkan bahawa input mengandungi kategori maklumat perbandingan. Jika tiada koordinat ditemui untuk sebarang reka bentuk pesanan data, kami mencetak mesej ralat yang menunjukkan bahawa pesanan data tidak dapat ditentukan.
Buat corak ungkapan biasa untuk menyemak corak tertentu yang dikaitkan dengan setiap jenis data.
Gunakan mod kompilasi kelas Corak.
Gunakan kaedah find() kelas Matcher untuk mencari sama ada setiap corak jenis data terdapat dalam rentetan input pengguna.
Simpan jenis data yang ditemui dalam pembolehubah untuk pemprosesan selanjutnya.
import java.util.regex.*; public class DataTypeFinder { public static void main(String[] args) { String userInput = "42.5"; // Example user input // Define regex pattern for each data type String integerPattern = "\d+"; String floatPattern = "\d+\.\d+"; String stringPattern = "[a-zA-Z]+"; // Compile the patterns Pattern integerRegex = Pattern.compile(integerPattern); Pattern floatRegex = Pattern.compile(floatPattern); Pattern stringRegex = Pattern.compile(stringPattern); // Create Matcher objects for each pattern Matcher integerMatcher = integerRegex.matcher(userInput); Matcher floatMatcher = floatRegex.matcher(userInput); Matcher stringMatcher = stringRegex.matcher(userInput); // Check for matches and store the found data type String dataType = ""; if (integerMatcher.find()) { dataType = "integer"; } if (floatMatcher.find()) { dataType = "float"; } if (stringMatcher.find()) { dataType = "string"; } // Process the found data type if (!dataType.isEmpty()) { System.out.println("Input is of data type: " + dataType); } else { System.out.println("Unable to determine the data type."); } } }
Input is of data type: float
在这种方法中,我们为每种数据类型创建单独的正则表达式模式,并使用 Pattern 类对其进行编译。
我们然后对每个模式进行Matcher对象的比较,将客户输入的字符串传递给每个matcher。再次使用Matcher类的find()方法来查找输入字符串中每个数据类型模式的存在。
在找到匹配项的情况下,我们将相应的数据类型存储在一个名为dataType的变量中。在处理完所有的模式后,我们检查dataType变量是否为空。如果不为空,我们打印一条消息显示找到的数据类型。如果dataType变量为空,我们打印一条错误消息,显示无法确定数据类型。
决定客户端输入的信息类型是许多 Java 应用程序的一个重要方面。正则表达式提供了一种强大的方法来识别字符串中的模式并有效地确定数据类型。在本文中,我们探索了使用 Java 中的正则表达式查找用户输入的数据类型的不同方法。
Atas ialah kandungan terperinci Cari jenis data input pengguna menggunakan ungkapan biasa dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!