我正在使用DNN表单构建模块,该模块允许根据条件运行某些服务器端代码。对于我的特定场景,如果某个表单文本的前4个字符是数字的话,我需要运行我的代码块。
但是,键入条件的空间只有一行,我相信会在幕后某处注入if
语句,所以我不具备编写多行条件的能力
如果我有一个名为MyField
的表单字段,我可能会创建一个简单的条件:
[MyField] == "some value"
然后在幕后某处将其翻译成if("some value" == "some value") {
我知道int.TryParse()
可用于确定字符串是否为数字,但我所见过的每个实现都需要两行代码,第一行声明变量以包含转换后的整数和第二个运行实际功能。
有没有办法检查字符串的前4个字符是否只是if
语句中可以存在的一行中的数字?
答案 0 :(得分:6)
将其包裹在extension method。
中public static class StringExtensions
{
public static bool IsNumeric(this string input)
{
int number;
return int.TryParse(input, out number);
}
}
并像
一样使用它if("1234".IsNumeric())
{
// Do stuff..
}
自问题更改后更新:
public static class StringExtensions
{
public static bool FirstFourAreNumeric(this string input)
{
int number;
if(string.IsNullOrEmpty(input) || input.Length < 4)
{
throw new Exception("Not 4 chars long");
}
return int.TryParse(input.Substring(4), out number);
}
}
并像
一样使用它if("1234abc".FirstFourAreNumeric())
{
// Do stuff..
}
答案 1 :(得分:3)
对此作出回应:
有没有办法检查字符串的前4个字符是否只能在if语句中存在的一行中是数字?
你们不必让它解释比正整数更复杂的事情。
body {
padding: 5px;
}
label {
font-weight: bold;
}
input[type=button] {
padding: 10px 16px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
p {
margin: 1em 0 0;
}
td.pz {
border: thin solid #000000;
width: 59px;
height: 57px;
background-color: #FFFFFF;
}
.red_block {
border: thin solid #000000;
width: 59px;
height: 57px;
background-color: #FF0000;
}
.yellow_block {
border: thin solid #000000;
width: 59px;
height: 57px;
background-color: #FFFF00;
}
td.padding {
width: 59px;
height: 57px;
}
旧回答:
如果你不能使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<br>
<br>
<input id="btnWhite" type='button' style="font-face: 'Arial'; width: 50px; font-size: larger; color: Black; background-color: #FFFFFF; border: 1px dotted #999"
value="">
<input id="btnYellow" type='button' style="font-face: 'Arial'; width: 50px; font-size: larger; color: Black; background-color: #FFFF00; border: 1px dotted #999"
value="">
<input id="btnRed" type='button' style="font-face: 'Arial'; width: 50px; font-size: larger; color: Black; background-color: #FF0000; border: 1px dotted #999"
value="">
<input id="btnBlue" type='button' style="font-face: 'Arial'; width: 50px; font-size: larger; color: Black; background-color: #0070C0; border: 1px dotted #999"
value="">
<input id="btnGreen" type='button' style="font-face: 'Arial'; width: 50px; font-size: larger; color: Black; background-color: #00FF00; border: 1px dotted #999"
value="">
<br>
<br>
<table>
<tr>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
</tr>
<tr>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
</tr>
<tr>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
</tr>
<tr>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
</tr>
<tr>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="yellow_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
<td class="red_block"></td>
</tr>
</table>
</body>
,你可能会使用LINQ:
new Regex(@"^\d{4}").IsMatch("3466") // true
new Regex(@"^\d{4}").IsMatch("6") // false
new Regex(@"^\d{4}").IsMatch("68ab") // false
new Regex(@"^\d{4}").IsMatch("1111abcdefg") // true
// in an if:
if (new Regex(@"^\d{4}").IsMatch("3466"))
{
// Do something
}
如果可以,请使用以下TryParse
扩展方法:
"12345".All(char.IsDigit); // true
"abcde".All(char.IsDigit); // false
"abc123".All(char.IsDigit); // false
答案 2 :(得分:2)
一些简单的LinQ怎么样?
if (str.Take(4).All(char.IsDigit) { ... }