如何在控制台应用程序中从字符串中查找分隔符

时间:2017-06-08 07:04:28

标签: c# string

Console.WriteLine("Enter a string");
string str = Console.ReadLine();

注意:用户可以输入任何分隔符,例如, @ # $ % * & ; :等。

示例:对于输入:1*2*5*9,分隔符为*

3 个答案:

答案 0 :(得分:5)

您可以在正则表达式的帮助下尝试猜测;让我们不是通过未知分隔符来分割输入,而是通过主文本项(整数?)来分割输入,我们将得到分隔符作为结果:

  string source = @"1*2*5*9";

  // Main text pattent; user is supposed to input integers numbers and delimiters
  string bodyPattern = 
    @"-?[0-9]+";

  var delimiters = Regex
    .Split(source, bodyPattern)
    .Select(item => item.Trim())
    .Where(item => !string.IsNullOrEmpty(item))
    .Distinct()
    .ToArray();

 Console.Write(string.Join(Environment.NewLine, delimiters)); 

结果:

 *

请注意,如果"1*2#5%9"输入,您将获得["*", "#", "%"]分隔符。

编辑:您真的想要分隔符吗?更自然的问题是提取主要文本项。如果是您的情况,您也可以使用正则表达式解决它:

 // ["1", "2", "5", "9"]
 var items = Regex
   .Matches(source, bodyPattern)
   .OfType<Match>()
   .Select(match => match.Value) 
   .ToString();   

答案 1 :(得分:1)

以下内容应该有所帮助

char[] delimiter  = {'@','#','&', '*'};    
foreach (char c in str)
{
    if(delimiter.Contains(c)
        //You found your char
}

答案 2 :(得分:1)

  Using system.text.regularexpressions;
  Regex ptr = new Regex(@"^[a-zA-Z0-9]*$") ;
  if(!ptr.Ismatch(str)) //whatever you want