1. 程式人生 > 其它 >關於座標輸入的基本格式校驗

關於座標輸入的基本格式校驗

最近寫程式碼的時候遇到了對輸入座標的基本檢驗,特此來和大家分享一下~

輸入格式:

  1. “正負號+數字+逗號+正負號+數字”,座標之間以空格分開。 例如:"33.9,2 -3,9 +6,0 9.0,-3"

對應的正則表示式:
"[+-]?([0-9])[.]?[0-9],[+-]?([0-9])[.]?[0-9]( [+-]?([0-9])[.]?[0-9],[+-]?([0-9])[.]?[0-9]){0,2}"

單個解釋:
"[+-]?" -----> 判斷數字前是否有正負號,如果有,只能是“+”和“-”其一;
"([0-9])*" -------> 指任意0-9的數字,可以是一個,也可以是多個;
"[.]?" ----------->指數字之間有無小數點,如果有,只能出現一次;
"," ---------> 指橫縱座標之間的逗號;
" " ----------> 指前一個座標與後一個座標之間的空格;
"{0,2}" --------> 指至少重複0次,至多重複2次;

所以,“([+-]?([0-9])[.]?[0-9],[+-]?([0-9])[.]?[0-9]” 就是驗證一次“正負號+數字+逗號+正負號+數字”

而“( [+-]?([0-9])[.]?[0-9],[+-]?([0-9])[.]?[0-9]{0,2}” 驗證之後輸入的座標,輸入的座標至多是2個

注意,“( [+-]?([0-9])[.]?[0-9],[+-]?([0-9])[.]?[0-9]{0,2}”中的空格不要漏掉,因為從輸入的第二個座標開始,每多一個座標就會多一個空格


綜上,我們輸入的座標至少是一個,至多是3個,當然了,需求不同的小夥伴也可以指定其他的校驗次數(這裡的校驗此時相當於出現次數)

3.在1的基礎上以"(x,y)"的格式輸入,即加上一對括號

舉一反三,只需在座標開頭加上"[(]"以及座標結尾加上"[)]" 例如: "[(][+-]?([0-9])[.]?[0-9],[+-]?([0-9])[.]?[0-9][)]"

很簡單有木有!!!


下面是一些程式碼舉例:

1.輸出正確
String s = "+888902,-3 -8989.9,0 34.5,6";
System.out.println(s.matches("[+-]?([0-9])*[.]?([0-9])*,[+-]?([0-9])*[.]?([0-9])*( [+-]?([0-9])*[.]?([0-9])*,[+-]?([0-9])*[.]?[0-9]*){0,2}""));

輸出結果:true

有圖有真相:

2.輸出錯誤

String s = "++888902,-3 -8989.9,0 34.5,6 //正負號錯誤

輸出結果:false

String +888902,-3 -8989.9,0 34.5,6 9,9//座標個數超過三個
輸出結果:false