findSplit

fnauto findSplit(alias pred = "a == b", R1, R2)(R1 haystack, R2 needle) if (isForwardRange!R1 && isForwardRange!R2)

These functions find the first occurrence of needle in haystack and then split haystack as follows.

findSplit returns a tuple result containing three ranges.
  • result[0] is the portion of haystack before needle
  • result[1] is the portion of

    haystack that matches needle

  • result[2] is the portion of haystack

    after the match.

If needle was not found, result[0] comprehends haystack entirely and result[1] and result[2] are empty.

findSplitBefore returns a tuple result containing two ranges.

  • result[0] is the portion of haystack before needle
  • result[1] is the balance of haystack starting with the match.

If needle was not found, result[0] comprehends haystack entirely and result[1] is empty.

findSplitAfter returns a tuple result containing two ranges.

  • result[0] is the portion of haystack up to and including the

    match

  • result[1] is the balance of haystack starting

    after the match.

If needle was not found, result[0] is empty and result[1] is haystack.

In all cases, the concatenation of the returned ranges spans the

entire haystack.

If haystack is a random-access range, all three components of the tuple have the same type as haystack. Otherwise, haystack must be a

forward range and

the type of result[0] (and result[1] for findSplit) is the same as the result of takeExactly.

For more information about pred see find.

Parameters

predPredicate to compare 2 elements.
haystackThe forward range to search.
needleThe forward range to look for.

Returns

A sub-type of Tuple of the split portions of haystack (see above for

details). This sub-type of Tuple defines opCast!bool, which returns true when the separating needle was found and false otherwise.

See Also