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 =
"""
""";
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 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);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto t = uc.NewTransformer();
auto FruitsXML =
R"(
)";
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 #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; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t = uc.NewTransformer()
Dim FruitsXML =
"
"
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 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