-2

如何在 MVC4 中的两个开始和结束字符串之间找到一个字符串?

一些例子:

D1 => D1 (result)
D1-D3 => D1,D2,D3 (result)
D5-D6 => D5,D6 (result)
D4-D7 => D4,D5,D6,D7 (result)
4

4 回答 4

0
  //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();
  }
于 2013-05-19T14:37:32.907 回答
0

您可以尝试使用以下代码:

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');
于 2013-05-19T14:39:32.073 回答
0

试试这段代码,设置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);
}
于 2013-05-19T14:49:22.287 回答
0

根据域要求进行错误检查取决于您。此代码假定输入正确,适用于您提供的示例。

情侣笔记:

  1. "" + ...与空字符串连接是在简单情况下克服类型转换问题的简单方法
  2. 您需要检查输入字符串是否正确。
  3. 可以扩展代码以使用多个范围。目前,如果您提供除Dxor以外的任何内容,它会打印“错误” 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";
        }
    }
    
于 2013-05-19T14:33:14.020 回答