[英]Splitting string in 2 or more regex
我想一個字符串分割成其中的部分,
()
spaces
都參與其中。
它來自組合框項目。 看起來像這樣
組合框項目
(123456) LastName, FirstName MiddleName
我想將其分成幾部分
int employeeNumber = 123456
String lastName = LastName
String firstName = firstName
String middleName = middleName
因此,我嘗試了此操作,但無法獲得所需的結果,因為似乎只是將其用逗號分隔。
String facultyName = adviserJcbx.getSelectedItem().toString().trim();
String [] facultyNameSplit = facultyName.split(",");
String facultyLastName = facultyNameSplit[0];
String facultyFirstName = facultyNameSplit[1];
//String facultyMiddleName = facultyNameSplit[2];
如果嘗試使用facultyName.split(",()\\\\s+");
類的方法, facultyName.split(",()\\\\s+");
出現錯誤facultyName.split(",()\\\\s+");
所有這四個變量將在CALLABLE
存儲過程的WHERE子句中使用,例如
SELECT id from table WHERE empNo = employeeNumber AND lName = lastName AND fName = firstName AND mName = middleName;
希望您能提供幫助,因為我在網上進行了調查,但找不到任何涉及更多字符參與拆分的示例。
另外,有沒有更簡單的方法來獲取GUI元素中的元素ID,而不必像我正在創建的過程那樣創建存儲過程。
CALL getFacultId(?,?,?,?);
這是屏幕截圖。
我的目標是通過拆分組合框並將其提供給getFacultyId(?,?,?,?)
存儲過程來獲取組合框中所選內容的ID。
提前致謝。
使用這樣的正則表達式:
\(([^)]*)\)\s*([^,]+),\s*(\S+)\s*(\S*)
為此的示例Java代碼:
String input = "(123456) LastName, FirstName MiddleName";
String regex = "\\(([^)]*)\\)\\s*([^,]+),\\s*(\\S+)\\s*(\\S*)";
Matcher m = Pattern.compile(regex).matcher(input);
if (m.matches()) {
System.out.println("empNo = " + m.group(1));
System.out.println("lName = " + m.group(2));
System.out.println("fName = " + m.group(3));
System.out.println("mName = " + m.group(4));
}
輸出量
empNo = 123456
lName = LastName
fName = FirstName
mName = MiddleName
我建議您使用正則表達式而不是split:
Pattern facultyPattern = Pattern.compile("\((\\d+)\) (\\w+), (\\w+) (\\w+)");
Matcher facultyMatcher = facultyPattern.match(facultyString);
if (facultyMatcher.matches() {
int id = Integer.parseInt(facultyMatcher.group(1));
String lastName = facultyMatcher.group(2);
String firstName = facultyMatcher.group(3);
String middleName = facultyMatcher.group(4);
...
} else {
// handle mismatch
}
我想你可以CONCAT
這四列到你所提到的格式:
SELECT id
from table
WHERE CONCAT('(', empNo, ') ', lName, ', ', fName, ' ', mName) = ?;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.