相信很多人在做作業時心中都有如標題
身為城市人不走鄉民路,用程式的方法一勞永逸
使用方法:
把doVerification.cs丟進專案
並且using CustomClass 就能直接使用
doVerification.doRegex()
doVerification.doRange()
這2個方法
方法需要的參數如說明
1:using CustomClass doVerification.doRegex()需要2個參數 2:判斷的目標 型態為 string 3:驗證的方式 型態為列舉 pattern.isPositiveInteger //匹配正整數 pattern.isNegativeInteger //匹配負整數 pattern.isInteger //匹配整數 pattern.NonNegativeInteger //匹配非負整數(正整數 + 0) pattern.NonPositiveInteger //匹配非正整數(負整數 + 0) doVerification.doRange()需要5個參數 4:判斷的目標 型態為 string 5:起點值 型態為 int 6:目標是與起點的關係 型態為列舉 isMoreThan //大於 isMoreThanOrEqualTo //大於等於 7:終點值 型態為 int 8:目標是與終點的關係 型態為列舉 isLessThan //小於 isLessThanOrEqualTo //小於等於
使用結果:
abc警告非整數
-5不合範圍
5合範圍
如此一來以後只要面對要判斷textbox.Text是否數字且在範圍內的時候
就只要使用這2個方法而不必每次都再寫一遍
以下為程式碼
using System.Text.RegularExpressions;
using System.Text;
using System.Windows.Forms;
namespace CustomClass {
public enum pattern {
isPositiveInteger,
isNegativeInteger,
isInteger,
NonNegativeInteger,
NonPositiveInteger
}
public enum startType {
isMoreThan,
isMoreThanOrEqualTo
}
public enum endType {
isLessThan,
isLessThanOrEqualTo
}
public class doVerification {
public const string isPositiveInteger = @"^[1-9]\d*$"; //匹配正整數
public const string isNegativeInteger = @"^-[1-9]\d*$"; //匹配負整數
public const string isInteger = @"^-?[1-9]\d*|0$"; //匹配整數
public const string NonNegativeInteger = @"^[1-9]\d*|0$";//匹配非負整數(正整數 + 0)
public const string NonPositiveInteger = @"^-[1-9]\d*|0$";//匹配非正整數(負整數 + 0
public static bool doRegex(string target, pattern pat) {
string patternStr;
switch (pat) {
case pattern.isPositiveInteger:
patternStr = isPositiveInteger;
break;
case pattern.isNegativeInteger:
patternStr = isNegativeInteger;
break;
case pattern.isInteger:
patternStr = isInteger;
break;
case pattern.NonNegativeInteger:
patternStr = NonNegativeInteger;
break;
case pattern.NonPositiveInteger:
patternStr = NonPositiveInteger;
break;
default:
patternStr = isInteger;
break;
}
Regex regex = new Regex(patternStr);
return regex.IsMatch(target);
}
public static bool doRange(string target, int start, startType st, int end, endType et) {
if (st == startType.isMoreThanOrEqualTo && et == endType.isLessThanOrEqualTo) {
if (int.Parse(target) >= start && int.Parse(target) <= end) {
return true;
} else {
return false;
}
}
if (st == startType.isMoreThan && et == endType.isLessThan) {
if (int.Parse(target) > start && int.Parse(target) < end) {
return true;
} else {
return false;
}
}
if (st == startType.isMoreThanOrEqualTo && et == endType.isLessThan) {
if (int.Parse(target) >= start && int.Parse(target) < end) {
return true;
} else {
return false;
}
}
if (st == startType.isMoreThan && et == endType.isLessThanOrEqualTo) {
if (int.Parse(target) > start && int.Parse(target) <= end) {
return true;
} else {
return false;
}
}
return false;
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CustomClass; //引用自訂類別
namespace MyHomework._0102 {
public partial class FrmTest : Form {
public FrmTest() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
int start = 0;
int end = 10;
bool isPositiveInteger = doVerification.doRegex(textBox1.Text, pattern.isInteger);
if (isPositiveInteger) {
if (doVerification.doRange(textBox1.Text, start, startType.isMoreThanOrEqualTo, end, endType.isLessThanOrEqualTo)) {
MessageBox.Show(string.Format("{0} < {1} <= {2} 為 True", start, textBox1.Text, end));
} else {
MessageBox.Show(string.Format("{0} < {1} <= {2} 為 False", start, textBox1.Text, end));
}
} else {
MessageBox.Show("is not Integer");
}
}
}
}
沒有留言:
張貼留言