如何使用C#在ASP.NET中的两个开始和结束字符串之间查找字符串?

时间:2013-05-19 14:00:24

标签: c#

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

一些例子:

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

4 个答案:

答案 0 :(得分:0)

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

情侣笔记:

  1. "" + ...串联空字符串是在简单情况下克服类型转换问题的简单方法
  2. 您需要检查输入字符串是否正确。
  3. 可以扩展代码以使用多个范围。目前,如果您提供DxDx-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";
        }
    }
    

答案 1 :(得分: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();
  }

答案 2 :(得分: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');

答案 3 :(得分: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);
}