using System.Collections.Generic;
using System.Text.RegularExpressions;
public static void Main()
var str = " Invisible Pty. Ltd. 1 Nowhere St. Sydney 2000 AUSTRALIA ";
var tokens = str.TokenizeUsingRegex(@"\s{2,}");
foreach(var token in tokens)
Console.WriteLine("'{0}' - {1}", token, token.Length);
public static class StringExtension
public static List<string> TokenizeUsingRegex(this string input, string separatorRegexPattern, bool includeSeparatorsAsToken = true)
var tokens = Regex.Split(input, separatorRegexPattern).Where(t => !string.IsNullOrWhiteSpace(t)).ToList();
if (!includeSeparatorsAsToken)
var newTokens = new List<string>();
for(int i = 0, l = tokens.Count(); i < l; i++)
var endIndex = input.IndexOf(token);
if (startIndex < endIndex) {
newTokens.Add(input.Substring(startIndex, endIndex - startIndex));
startIndex = endIndex + token.Length;
if (startIndex < input.Length) {
newTokens.Add(input.Substring(startIndex));