magic.lambda.strings 14.5.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package magic.lambda.strings --version 14.5.1                
NuGet\Install-Package magic.lambda.strings -Version 14.5.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="magic.lambda.strings" Version="14.5.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add magic.lambda.strings --version 14.5.1                
#r "nuget: magic.lambda.strings, 14.5.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install magic.lambda.strings as a Cake Addin
#addin nuget:?package=magic.lambda.strings&version=14.5.1

// Install magic.lambda.strings as a Cake Tool
#tool nuget:?package=magic.lambda.strings&version=14.5.1                

Manipulating strings from Hyperlambda

This project contains string manipulation slots for Magic. More specifically, it gives you the following slots.

  • [strings.replace] - Replaces occurrencies of the specified argument with the value of its specified argument
  • [strings.replace-not-of] - Replaces all characters found in string, except those found in its single argument
  • [strings.capitalize] - Turns the first character in your string into a CAPS
  • [strings.concat] - Concatenates two or more strings
  • [strings.contains] - Returns true if specified string contains the given argument
  • [strings.ends-with] - Returns true if the specified string ends with the specified argument
  • [strings.starts-with] - Returns true if the specified string starts with its argument
  • [strings.join] - Joins multiple strings together, with a separating string between each string joined
  • [strings.length] - Returns the length in characters of the given string
  • [strings.regex-replace] - Replaces occurrencies matching the given regular expression with its argument
  • [strings.split] - Splits a string into multiple strings on every match of its given argument
  • [strings.to-lower] - Returns the lower caps version of its given argument
  • [strings.to-upper] - Returns the upper caps version of its specified argument
  • [strings.trim] - Trims a string, optionally for all characters found in its argument
  • [strings.trim-start] - Trims a string only to its left, optionally for all characters found in its argument
  • [strings.trim-end] - Trims a string only to its right, optionally for all characters found in its argument
  • [strings.url-encode] - URL encodes the specified string
  • [strings.url-decode] - URL decodes the specified string
  • [strings.substring] - Returns the sub-string of the specified string
  • [strings.matches] - Returns the regular expression matches found from specified source

Usage

All the above slots that requires two arguments, will use the first argument as its "what" argument, and the second as its "with" argument. Avoiding naming these though, allows you to reference other slots, and use these as sources to parametrize your invocations to the above slots. Below is an example of how this would look like.

.data:Hyperlambda is cool

strings.replace:x:-
   .:cool
   .:super cool

[strings.replace]

This slot replaces occurrencies of a string inside a string, with some other string. The simplest version is like follows.

.foo:thomas hansen

strings.replace:x:-
   .:hansen
   .:tjobing hansen

You can also reference slots and dynamic slots for that matter, assuming your slots somehow returns strings, or something that can be converted into a string, such as the following illustrates. Notice, this code will throw an exception, since there are probably no slots called "some-slot-returning-string" in your installation.

.what:hansen
.foo:thomas hansen

strings.replace:x:-

   get-value:x:@.what

   signal:some-slot-returning-string
      arg1-to-slot:foo
      arg2-to-slot:foo

Above the first argument is "what to look for", and the second argument is "what to substitute it with". The above is a general pattern for most of these slots, where the node arguments supplied to the slot will be evaluated as a lambda object, before the arguments are consumed, allowing you to use arguments that are the result of invoking other slots as arguments to your original outer most slot.

[strings.replace-not-of]

This slot will replace every single character in your original string, that cannot be found in its first argument, with the value of its second argument. This slot is useful if you want to remove all characters that cannot be found in another character set, such as the following illustrates.

strings.replace-not-of:foo bar1howdy
   .:abcdefghijklmnopqrstuvwxyz
   .:-

The above will result in the following result

strings.replace-not-of:foo-bar-howdy

[strings.capitalize]

Turns the first character of your string into a CAPS character.

strings.capitalize:thomas

/*
 * Resulting in "Thomas" after invocation.
 */

[strings.concat]

Concatenates a list of strings into one string. Similar to [strings.join], except it doesn't take a separating character.

.bar:Bar
strings.concat
   .:Thomas
   .:" "
   .:Hansen
   .:" "
   .:Foo
   .:" "
   get-value:x:@.bar

/*
 * Resulting in "Thomas Hansen Foo Bar" after invocation.
 */

[strings.contains]

Returns true if the specified string contains some sequence of characters.

// Returns true
strings.contains:Thomas Hansen Is Cool
   .:Hansen

[strings.ends-with]

Returns true if the specified string ends with some sequence of characters.

// Returns true
strings.ends-with:Thomas Hansen Is Cool
   .:Cool

// Returns false
strings.ends-with:Thomas Hansen Is Coolio
   .:Cool

[strings.starts-with]

Returns true if the specified string starts with some sequence of characters.

// Returns true
strings.ends-with:Thomas Hansen Is Cool
   .:Thomas

// Returns false
strings.ends-with:Thomas Hansen Is Cool
   .:Hansen

[strings.join]

Similar to [strings.concat], except it also takes an optional separating character, allowing you to concatenate a bunch of strings, and making sure each original string is separated by some sequence of strings.

.src
   .:foo
   .:bar
strings.join:x:@.src/*
   .:,

/*
 * Results in "foo,bar"
 */

[strings.length]

Returns the length of a string as an integer number.

// Returns 6
strings.length:thomas

[strings.regex-replace]

Replaces matches of the given regular expression with some static sequence of characters.

// Results in "FOO bar hansen"
strings.regex-replace:foo bar hansen
   .:fo+
   .:FOO

The first argument is what regular expression to match, the second argument is what to replace all matches with.

[strings.split]

Splits a string into multiple strings, where a sequence of characters can be found, removing the original sequence of characters from the resulting node set.

.foo:some input string
strings.split:x:-
   .:' '

The above will result in the following result.

.foo:some input string
strings.split:x:-
   .:some
   .:input
   .:string

[strings.to-lower]

Turns every single character in your input string into a lowercase character.

strings.to-lower:Thomas Hansen Is Cool

// Results in "thomas hansen is cool"

[strings.to-upper]

Turns every single character in your input string into a UPPER case character.

strings.to-upper:Thomas Hansen Is Cool

// Results in "THOMAS HANSEN IS COOL"

[strings.trim], [strings.trim-start], [strings.trim-end]

Trims a string, either both sides, only the start of it, or only the end of it, for occurrencies of characters found in the sequence of characters provided as its argument.

strings.trim:09thomas12
   .:1234567890

// Results in "thomas"

[strings.url-encode]

URL encodes a string. Example can be found below.

strings.url-encode:thomas@servergardens.com

Resulting in the following after execution.

strings.url-encode:thomas%40servergardens.com

[strings.url-decode]

URL decodes a string, the opposite of [strings.url-encode]. Example can be found below.

strings.url-encode:thomas@servergardens.com
strings.url-decode:x:-

Resulting in the following after execution.

strings.url-encode:thomas%40servergardens.com
strings.url-decode:thomas@servergardens.com

[strings.substring]

Returns a substring of the specified string.

.input:Foo Bar Howdy World
strings.substring:x:-
   .:5
   .:7

The above will result in the following.

strings.substring:ar Howd

Notice, the second argument is the number of characters to return and not the offset into the string of where to stop returning. In such a regard, it works the same way as the C# Substring method.

[strings.matches]

Returns all regular expression matches from specified source string.

.input:Foo Bar Howdy World {match1} and {match2} and that was it
strings.matches:x:-
   .:"\\{.+?\\}"

The above will result in the following.

strings.matches
   .:{match1}
   .:{match2}

Notice, the second argument is the number of characters to return and not the offset into the string of where to stop returning. In such a regard, it works the same way as the C# Substring method.

Project website

The source code for this repository can be found at github.com/polterguy/magic.lambda.strings, and you can provide feedback, provide bug reports, etc at the same place.

Quality gates

  • Build status
  • Quality Gate Status
  • Bugs
  • Code Smells
  • Coverage
  • Duplicated Lines (%)
  • Lines of Code
  • Maintainability Rating
  • Reliability Rating
  • Security Rating
  • Technical Debt
  • Vulnerabilities
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on magic.lambda.strings:

Package Downloads
magic.library

Helper project for Magic to wire up everything easily by simply adding one package, and invoking two simple methods. When using Magic, this is (probably) the only package you should actually add, since this package pulls in everything else you'll need automatically, and wires up everything sanely by default. To use package go to https://polterguy.github.io

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
17.3.3 330 2/8/2024
17.2.0 219 1/22/2024
17.1.7 203 1/12/2024
17.1.6 145 1/11/2024
17.1.5 174 1/5/2024
17.0.1 209 1/1/2024
17.0.0 370 12/14/2023
16.11.5 350 11/12/2023
16.9.0 360 10/9/2023
16.7.0 578 7/11/2023
16.4.2 351 7/3/2023
16.4.1 266 7/2/2023
16.4.0 432 6/22/2023
16.3.1 388 6/7/2023
16.3.0 374 5/28/2023
16.1.9 677 4/30/2023
15.10.11 486 4/13/2023
15.9.1 662 3/27/2023
15.9.0 521 3/24/2023
15.8.2 562 3/20/2023
15.7.0 443 3/6/2023
15.5.13 1,047 2/13/2023
15.5.9 487 2/11/2023
15.5.0 892 1/28/2023
15.2.0 719 1/18/2023
15.1.0 1,198 12/28/2022
14.5.7 752 12/13/2022
14.5.5 856 12/6/2022
14.5.1 690 11/23/2022
14.5.0 648 11/18/2022
14.4.5 740 10/22/2022
14.4.1 814 10/22/2022
14.4.0 708 10/17/2022
14.3.1 1,314 9/12/2022
14.3.0 680 9/10/2022
14.1.3 959 8/7/2022
14.1.2 726 8/7/2022
14.1.1 723 8/7/2022
14.0.14 729 7/26/2022
14.0.12 728 7/24/2022
14.0.11 651 7/23/2022
14.0.10 683 7/23/2022
14.0.9 695 7/23/2022
14.0.8 767 7/17/2022
14.0.5 830 7/11/2022
14.0.4 842 7/6/2022
14.0.3 753 7/2/2022
14.0.2 688 7/2/2022
14.0.0 905 6/25/2022
13.4.0 2,135 5/31/2022
13.3.4 1,477 5/9/2022
13.3.0 992 5/1/2022
13.2.0 1,213 4/21/2022
13.1.0 1,086 4/7/2022
13.0.0 746 4/5/2022
11.0.5 1,458 3/2/2022
11.0.4 820 2/22/2022
11.0.3 793 2/9/2022
11.0.2 827 2/6/2022
11.0.1 799 2/5/2022
10.0.21 801 1/28/2022
10.0.20 802 1/27/2022
10.0.19 766 1/23/2022
10.0.18 758 1/17/2022
10.0.15 981 12/31/2021
10.0.14 600 12/28/2021
10.0.7 1,544 12/22/2021
10.0.5 774 12/18/2021
9.9.9 1,699 11/29/2021
9.9.6 4,524 11/24/2021
9.9.3 812 11/9/2021
9.9.2 651 11/4/2021
9.9.0 779 10/30/2021
9.8.9 753 10/29/2021
9.8.7 683 10/27/2021
9.8.6 666 10/27/2021
9.8.5 699 10/26/2021
9.8.0 1,430 10/20/2021
9.7.9 649 10/19/2021
9.7.5 1,526 10/14/2021
9.7.0 905 10/9/2021
9.6.6 1,253 8/14/2021
9.3.5 4,607 6/18/2021
9.2.0 2,387 5/26/2021
9.1.4 1,309 4/21/2021
9.1.0 1,111 4/14/2021
9.0.0 922 4/5/2021
8.9.9 1,075 3/30/2021
8.9.3 1,616 3/19/2021
8.9.2 1,067 1/29/2021
8.9.1 1,106 1/24/2021
8.9.0 1,167 1/22/2021
8.6.9 2,961 11/8/2020
8.6.7 1,229 11/4/2020
8.6.6 1,298 11/2/2020
8.6.0 4,056 10/28/2020
8.5.0 1,929 10/23/2020
8.4.1 4,857 10/15/2020
8.4.0 1,324 10/13/2020
8.3.1 2,694 10/5/2020
8.3.0 1,265 10/3/2020
8.2.2 2,042 9/26/2020
8.2.1 1,339 9/25/2020
8.2.0 1,367 9/25/2020
8.1.17 6,751 9/13/2020
8.1.16 637 9/13/2020
8.1.15 1,924 9/12/2020
8.1.11 2,550 9/11/2020
8.1.10 1,303 9/6/2020
8.1.9 1,365 9/3/2020
8.1.8 1,322 9/2/2020
8.1.7 1,219 8/28/2020
8.1.4 1,249 8/25/2020
8.1.3 1,305 8/18/2020
8.1.2 1,243 8/16/2020
8.1.1 1,324 8/15/2020
8.1.0 642 8/15/2020
8.0.1 2,767 8/7/2020
8.0.0 1,282 8/7/2020
7.0.1 1,454 6/28/2020
7.0.0 1,387 6/28/2020
5.0.0 7,536 2/25/2020
4.0.4 7,958 1/27/2020
4.0.3 1,288 1/27/2020
4.0.2 1,467 1/16/2020
4.0.1 1,421 1/11/2020
4.0.0 1,385 1/5/2020
3.1.0 6,340 11/10/2019
3.0.0 3,937 10/23/2019
2.0.2 7,797 10/16/2019
2.0.1 1,225 10/15/2019
2.0.0 1,633 10/13/2019
1.1.8 1,405 10/11/2019
1.1.7 1,323 10/10/2019
1.1.6 622 10/9/2019
1.1.5 629 10/6/2019
1.1.4 607 10/6/2019
1.1.3 635 10/6/2019
1.1.2 638 10/5/2019
1.0.0 677 9/26/2019