uCalc API Version: 2.1.3-preview.2 Released: 6/16/2026

Warning

uCalc API Preview Release Notice:The documentation describes the intended behavior of the API. The current preview build contains incomplete features, unoptimized performance, and is subject to breaking changes.

Filter(string)

Method

Product: 

Transformer Library

Class: 

Transformer

Performs a Filter operation on the given text

Syntax

Filter(string)

Parameters

expression
string
Expression to be transformed

Return

Transformer

Current transformer

Remarks

[Revisit]This performs a filter operation on text. This is similar to a Transform() operation, however, the result is text consisting of just the matches. The operation is performed on the string passed to this Filter() function.

Examples

Rule StartAfter()
				
					using uCalcSoftware;

var uc = new uCalc();
var t = uc.NewTransformer();
var FruitsXML =
"""

<Fruits>
  <Fruit CommonName='Apple' ScientificName='Malus domestica' />
  <Fruit CommonName='Banana' ScientificName='Musa acuminata' />
  <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' />
  <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' />
  <Fruit CommonName='Strawberry' ScientificName='Fragaria × ananassa' />
  <Fruit CommonName='Pineapple' ScientificName='Ananas comosus' />
  <Fruit CommonName='Mango' ScientificName='Mangifera indica' />
  <Fruit CommonName='Blueberry' ScientificName='Vaccinium corymbosum' />
  <Fruit CommonName='Rambutan' ScientificName='Nephelium lappaceum' />
  <Fruit CommonName='Salak (Snake Fruit)' ScientificName='Salacca zalacca' />
  <Fruit CommonName='Jabuticaba' ScientificName='Plinia cauliflora' />
  <Fruit CommonName='Watermelon' ScientificName='Citrullus lanatus' />
</Fruits>

""";

var Fruit = t.FromTo("CommonName={@string:name}", "{name}");

// StopAfter()
Fruit.StopAfter = 4;
t.Filter(FruitsXML);
Console.WriteLine($"*** Stop after: {Fruit.StopAfter} ***");
Console.WriteLine(t.Matches.Text);
Fruit.StopAfter = -1; // Resets back to infinity (default) for next example
Console.WriteLine("");

// StartAfter()
Fruit.StartAfter = 6;
t.Filter(FruitsXML);
Console.WriteLine($"*** Start after: {Fruit.StartAfter} ***");
Console.WriteLine(t.Matches.Text);
Fruit.StartAfter = 0; // Resets back to 0 (default) for next example
Console.WriteLine("");


// Both StartAfter() and StopAfter()
Fruit.SetStartAfter(2).SetStopAfter(5);
t.Filter(FruitsXML);
Console.WriteLine($"*** Between {Fruit.StartAfter + 1} and {Fruit.StopAfter} ***");
Console.WriteLine(t.Matches.Text);
Console.WriteLine("");

// All
uc.DefineVariable("x = 1");
Fruit = t.FromTo("CommonName={@string:name}", "{@Eval: x++}. {name}");
t.Filter(FruitsXML);
Console.WriteLine("*** All ***");
Console.WriteLine(t.Matches.Text);
				
			
*** Stop after: 4 ***
Apple
Banana
Orange
Grapes

*** Start after: 6 ***
Mango
Blueberry
Rambutan
Salak (Snake Fruit)
Jabuticaba
Watermelon

*** Between 3 and 5 ***
Orange
Grapes
Strawberry

*** All ***
1. Apple
2. Banana
3. Orange
4. Grapes
5. Strawberry
6. Pineapple
7. Mango
8. Blueberry
9. Rambutan
10. Salak (Snake Fruit)
11. Jabuticaba
12. Watermelon
				
					#include <iostream>
#include "uCalc.h"

using namespace std;
using namespace uCalcSoftware;

int main() {
   uCalc uc;
   auto t = uc.NewTransformer();
   auto FruitsXML =
   R"(
<Fruits>
  <Fruit CommonName='Apple' ScientificName='Malus domestica' />
  <Fruit CommonName='Banana' ScientificName='Musa acuminata' />
  <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' />
  <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' />
  <Fruit CommonName='Strawberry' ScientificName='Fragaria × ananassa' />
  <Fruit CommonName='Pineapple' ScientificName='Ananas comosus' />
  <Fruit CommonName='Mango' ScientificName='Mangifera indica' />
  <Fruit CommonName='Blueberry' ScientificName='Vaccinium corymbosum' />
  <Fruit CommonName='Rambutan' ScientificName='Nephelium lappaceum' />
  <Fruit CommonName='Salak (Snake Fruit)' ScientificName='Salacca zalacca' />
  <Fruit CommonName='Jabuticaba' ScientificName='Plinia cauliflora' />
  <Fruit CommonName='Watermelon' ScientificName='Citrullus lanatus' />
</Fruits>
)";

   auto Fruit = t.FromTo("CommonName={@string:name}", "{name}");

   // StopAfter()
   Fruit.StopAfter(4);
   t.Filter(FruitsXML);
   cout << "*** Stop after: " << Fruit.StopAfter() << " ***" << endl;
   cout << t.Matches().Text() << endl;
   Fruit.StopAfter(-1); // Resets back to infinity (default) for next example
   cout << "" << endl;

   // StartAfter()
   Fruit.StartAfter(6);
   t.Filter(FruitsXML);
   cout << "*** Start after: " << Fruit.StartAfter() << " ***" << endl;
   cout << t.Matches().Text() << endl;
   Fruit.StartAfter(0); // Resets back to 0 (default) for next example
   cout << "" << endl;


   // Both StartAfter() and StopAfter()
   Fruit.SetStartAfter(2).SetStopAfter(5);
   t.Filter(FruitsXML);
   cout << "*** Between " << Fruit.StartAfter() + 1 << " and " << Fruit.StopAfter() << " ***" << endl;
   cout << t.Matches().Text() << endl;
   cout << "" << endl;

   // All
   uc.DefineVariable("x = 1");
   Fruit = t.FromTo("CommonName={@string:name}", "{@Eval: x++}. {name}");
   t.Filter(FruitsXML);
   cout << "*** All ***" << endl;
   cout << t.Matches().Text() << endl;
}
				
			
*** Stop after: 4 ***
Apple
Banana
Orange
Grapes

*** Start after: 6 ***
Mango
Blueberry
Rambutan
Salak (Snake Fruit)
Jabuticaba
Watermelon

*** Between 3 and 5 ***
Orange
Grapes
Strawberry

*** All ***
1. Apple
2. Banana
3. Orange
4. Grapes
5. Strawberry
6. Pineapple
7. Mango
8. Blueberry
9. Rambutan
10. Salak (Snake Fruit)
11. Jabuticaba
12. Watermelon
				
					Imports System
Imports uCalcSoftware
Public Module Program
   Public Sub Main()
      Dim uc As New uCalc()
      Dim t = uc.NewTransformer()
      Dim FruitsXML =
      "
<Fruits>
  <Fruit CommonName='Apple' ScientificName='Malus domestica' />
  <Fruit CommonName='Banana' ScientificName='Musa acuminata' />
  <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' />
  <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' />
  <Fruit CommonName='Strawberry' ScientificName='Fragaria × ananassa' />
  <Fruit CommonName='Pineapple' ScientificName='Ananas comosus' />
  <Fruit CommonName='Mango' ScientificName='Mangifera indica' />
  <Fruit CommonName='Blueberry' ScientificName='Vaccinium corymbosum' />
  <Fruit CommonName='Rambutan' ScientificName='Nephelium lappaceum' />
  <Fruit CommonName='Salak (Snake Fruit)' ScientificName='Salacca zalacca' />
  <Fruit CommonName='Jabuticaba' ScientificName='Plinia cauliflora' />
  <Fruit CommonName='Watermelon' ScientificName='Citrullus lanatus' />
</Fruits>
"
      
      Dim Fruit = t.FromTo("CommonName={@string:name}", "{name}")
      
      '// StopAfter()
      Fruit.StopAfter = 4
      t.Filter(FruitsXML)
      Console.WriteLine($"*** Stop after: {Fruit.StopAfter} ***")
      Console.WriteLine(t.Matches.Text)
      Fruit.StopAfter = -1 '// Resets back to infinity (default) for next example
      Console.WriteLine("")
      
      '// StartAfter()
      Fruit.StartAfter = 6
      t.Filter(FruitsXML)
      Console.WriteLine($"*** Start after: {Fruit.StartAfter} ***")
      Console.WriteLine(t.Matches.Text)
      Fruit.StartAfter = 0 '// Resets back to 0 (default) for next example
      Console.WriteLine("")
      
      
      '// Both StartAfter() and StopAfter()
      Fruit.SetStartAfter(2).SetStopAfter(5)
      t.Filter(FruitsXML)
      Console.WriteLine($"*** Between {Fruit.StartAfter + 1} and {Fruit.StopAfter} ***")
      Console.WriteLine(t.Matches.Text)
      Console.WriteLine("")
      
      '// All
      uc.DefineVariable("x = 1")
      Fruit = t.FromTo("CommonName={@string:name}", "{@Eval: x++}. {name}")
      t.Filter(FruitsXML)
      Console.WriteLine("*** All ***")
      Console.WriteLine(t.Matches.Text)
   End Sub
End Module
				
			
*** Stop after: 4 ***
Apple
Banana
Orange
Grapes

*** Start after: 6 ***
Mango
Blueberry
Rambutan
Salak (Snake Fruit)
Jabuticaba
Watermelon

*** Between 3 and 5 ***
Orange
Grapes
Strawberry

*** All ***
1. Apple
2. Banana
3. Orange
4. Grapes
5. Strawberry
6. Pineapple
7. Mango
8. Blueberry
9. Rambutan
10. Salak (Snake Fruit)
11. Jabuticaba
12. Watermelon