如何在 MVC4 中的两个开始和结束字符串之间找到一个字符串?
一些例子:
D1 => D1 (result)
D1-D3 => D1,D2,D3 (result)
D5-D6 => D5,D6 (result)
D4-D7 => D4,D5,D6,D7 (result)
如何在 MVC4 中的两个开始和结束字符串之间找到一个字符串?
一些例子:
D1 => D1 (result)
D1-D3 => D1,D2,D3 (result)
D5-D6 => D5,D6 (result)
D4-D7 => D4,D5,D6,D7 (result)
//To find a middle string inclusively
var alpha = "abcdefghijklmnopqrstuvwxyz";
var begin = "cde";
var end = "mno";
var beginIndex = alpha.IndexOf(begin);
var endIndex = alpha.IndexOf(end);
if (beginIndex != -1 && endIndex != -1)
{
var middle = alpha.Substring(beginIndex, endIndex + end.Length - beginIndex);
System.Diagnostics.Debugger.Break();
}
您可以尝试使用以下代码:
private static string GetString(string inputStr, char replaceChar)
{
string outputStr = string.Empty;
var strColl = inputStr.Replace(replaceChar, ' ').Split('-');
int min = Convert.ToInt32(strColl[0]);
int max = min;
if (strColl.Count() > 1) max = Convert.ToInt32(strColl[1]);
for(int i = min; i <= max; i++)
{
outputStr += "D" + i + ",";
}
return outputStr = outputStr.TrimEnd(','); // remove the last comma (,)
}
您可以简单地调用此方法,如下所示:
GetString("D1-D3", 'D');
试试这段代码,设置input
值并获取output
值
var input = "D1-D5";
string output = string.Empty;
if (input.IndexOf("-") > 0)
{
var values = input.Split('-');
int first = int.Parse(System.Text.RegularExpressions.Regex.Match(values[0], @"\d+").Value);
int second = int.Parse(System.Text.RegularExpressions.Regex.Match(values[1], @"\d+").Value);
for (int i = first; i <= second; i++)
{
output += "D" + i + ",";
}
output = output.Remove(output.Length - 1);
}
根据域要求进行错误检查取决于您。此代码假定输入正确,适用于您提供的示例。
情侣笔记:
"" + ...
与空字符串连接是在简单情况下克服类型转换问题的简单方法可以扩展代码以使用多个范围。目前,如果您提供除Dx
or以外的任何内容,它会打印“错误” Dx-Dy
。您可以为此使用递归函数。
private static string getString(string input, char controlChar='D')
{
string numbersOnly = input.Replace("" + controlChar, "");
string[] bounds = numbersOnly.Split('-');
if( bounds.Length == 1 )
{
return "" + controlChar + bounds[0];
}
else if (bounds.Length == 2)
{
string str = "";
for (int i = Int32.Parse(bounds[0]); i <= Int32.Parse(bounds[1]); i++)
{
str += controlChar + "" + i + ",";
}
str = str.TrimEnd(',');
return str;
}
else
{
return "Error";
}
}