C Sharp: Difference between revisions

From David's Wiki
No edit summary
No edit summary
Line 15: Line 15:
     {
     {
         // Define a regular expression for repeated words.
         // Define a regular expression for repeated words.
         Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
         Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b");
          RegexOptions.Compiled | RegexOptions.IgnoreCase);


         // Define a test string.         
         // Define a test string.         
         string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
         string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
          
          
         // Find matches.
         // Find match.
         MatchCollection matches = rx.Matches(text);
         Match match = rx.Match(text);


         // Report the number of matches found.
         // Iterature through captures
         Console.WriteLine("{0} matches found in:\n  {1}",
         foreach (Capture c in match.captures) {
                          matches.Count,
          Console.WriteLine("Captured {c.Value}");
                          text);
 
        // Report on each match.
        foreach (Match match in matches)
        {
            GroupCollection groups = match.Groups;
            Console.WriteLine("'{0}' repeated at positions {1} and {2}"
                              groups["word"].Value,
                              groups[0].Index,
                              groups[1].Index);
         }
         }
     }
     }

Revision as of 20:24, 20 September 2019


Usage

Regular Expressions

Regex
Reference

using System;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main ()
    {
        // Define a regular expression for repeated words.
        Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b");

        // Define a test string.      <br />
        string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
      <br />
        // Find match.
        Match match = rx.Match(text);

        // Iterature through captures
        foreach (Capture c in match.captures) {
           Console.WriteLine("Captured {c.Value}");
        }
    }	
}

Multithreading

Theadpool

C# has a convenient TheadPool class in the System.Threading namespace.

class TestClass {
  static void Main(string[] args) {

    int numberOfTasks = 10;
    int tasksRemaining = 10;
    // This is similar to a mutex.
    ManualResetEvent finishedHandle = new ManualResetEvent(false);
    for (int i = 0; i < numberOfTasks; i++) {
      int j = i;
      ThreadPool.QueueUserWorkItem(_ => {
        try {
          // Do something time consuming or resource intensive.
          // Do not use i here. You can use j instead.
        } catch (System.Exception e) {
          // Print Stack Trace
        } finally {
          if (Interlocked.Decrement(ref tasksRemaining) == 0) {
            finishedHandle.Set();
          }
        }
      });
    }

    // Blocking wait.
    finishedHandle.WaitOne();
  }
}