コード例 #1
0
		IEnumerable<Range> SelectSplit(Range range, SelectSplitDialog.Result result)
		{
			var str = GetString(range);
			var start = 0;
			foreach (Match match in result.Regex.Matches(str))
			{
				if (match.Index != start)
					yield return Range.FromIndex(range.Start + start, match.Index - start);
				if (result.IncludeResults)
					yield return Range.FromIndex(range.Start + match.Index, match.Length);
				start = match.Index + match.Length;
			}
			if (str.Length != start)
				yield return Range.FromIndex(range.Start + start, str.Length - start);
		}
コード例 #2
0
		static public Result Run(Window parent)
		{
			var dialog = new SelectSplitDialog() { Owner = parent };
			return dialog.ShowDialog() ? dialog.result : null;
		}
コード例 #3
0
		void Command_Select_Split(SelectSplitDialog.Result result) => Selections.Replace(Selections.AsParallel().AsOrdered().SelectMany(range => SelectSplit(range, result)).ToList());