-
Notifications
You must be signed in to change notification settings - Fork 0
Text soundex encode
Development build. This page describes
main, not a released package. The latest published Lodestar.Text is 0.3.2 — read its documentation.
The 4-character Soundex code of one word.
public static string Encode(ReadOnlySpan<char> value)
public static string Encode(string value)Parameters — value is a single word. Non-letters in it are ignored rather than rejected, and
case does not matter. The string overload forwards to the span one, so passing a string
allocates nothing extra.
Returns — string: an uppercase letter followed by three digits, always exactly four
characters — or the empty string when value holds no letter at all.
Exceptions — none. This method does not throw, and that includes null, which is treated as
an empty input and encodes to the empty string.
Example — a collision, a word with too few consonants to fill the code, and the null case.
using Lodestar.Text.Phonetics;
string robert = Soundex.Encode("Robert"); // => R163
string rupert = Soundex.Encode("Rupert"); // => R163
string padded = Soundex.Encode("Lee"); // => L000
string missing = null!;
int empty = Soundex.Encode(missing).Length; // => 0Remarks — L000 is the padding rule doing its work: Lee has one codeable consonant and the
code is still four characters wide, because a fixed width is what lets Soundex be an index key.
That null returns "" rather than throwing is worth knowing, because it is the opposite of the
stemmers in Lodestar.Text.Stemming, which refuse a null word. Here a missing
name silently becomes a code that matches every other missing name — check for it before encoding
if that would be wrong.
The two overloads are the same algorithm; the span one exists so a word already sliced out of a larger buffer can be encoded without copying it.
Applies to — net10.0, netstandard2.0.
See also — Soundex, Nysiis.Encode,
the phonetics index.
- 0001-target-framework
- 0002-unicode-comparison-unit
- 0003-provenance-and-licensing
- 0004-levenshtein-myers-backlog
- 0005-hamming-jellyfish-divergence
- 0006-ratcliff-autojunk
- 0007-metaphone-scope
- 0008-italian-enza-nltk-divergence
- 0009-sample-consumes-a-local-feed
- 0010-stop-word-list-provenance
- 0011-persistence-format
- 0012-per-package-versioning
- 0013-sentencepiece-parity-scope
- 0014-precompiled-normalizer
- 0015-sonar-rules-in-the-build
- 0016-metrics-package-placement
- 0017-bpe-parity-scope
- 0018-multiclass-roc-auc-parallelism-is-opt-in
- 0019-the-net-analysers-run-in-the-build-too
- 0020-normalize-is-a-projection-not-a-parameter
- 0021-multioutput-is-a-method-not-an-enum
- 0022-added-token-matching-flags
- 0023-byte-level-decode-substitutes
- 0024-weighted-median-averages-within-scikit-learns-epsilon
- 0025-quickselect-replaces-a-full-sort-for-the-median
- 0026-r2-and-explainedvariance-split-their-undefined-cases-differently
- 0027-r2-and-explainedvariance-vectorize-only-a-single-output
- 0028-log1p-is-kahans-identity-not-math-log-1-plus-x
- 0029-balanced-accuracy-adjusted-is-left-to-ieee-754-at-the-edge
- 0030-cohen-kappa-keeps-scikit-learns-expected-matrix-orientation
- 0031-nosamplecorrect-mirrors-numpys-float64-upcast
- 0032-fbeta-substitutes-tp-predicted-and-support-algebraically
- 0033-compensated-sum-is-neumaiers-variant
- 0034-dropout-is-refused-for-want-of-a-user
- 0035-a-null-pre-split-is-removed-with-invert-not-isolated
- 0036-a-member-may-ship-without-an-oracle-if-it-says-so
- 0037-the-guards-run-before-the-commit
- 0038-the-gate-confronts-an-exception-tag-with-the-page-that-documents-it
- 0039-mutual-information-returns-zero-on-an-empty-input
- 0040-a-curve-is-a-sealed-class-per-curve
- 0041-one-sample-file-per-public-class
- 0042-phonetic-encoders-refuse-a-null-word
- 0043-the-equality-table-is-sized-to-the-pattern
- 0044-compression-belongs-to-the-caller
- 0045-a-console-call-carries-its-reason-on-the-line
- 0046-check-adr-immutable-runs-in-ci-only
- 0047-one-gate-per-kernel-not-one-per-alphabet
- 0048-the-gate-depends-on-the-kernel-and-the-alphabet
- 0049-two-gates-per-kernel-tested-where-the-width-is-known
- 0050-the-sentencepiece-bpe-lineage-stays-a-bpe-model
- benchmark_latest
- decisions
- equivalence
- matplotlib
- migration
- nightly_run
- numpy
- pandas
- performance
- pytorch
- seaborn
- sklearn
- statsmodels