# string-mismatch

2.1.1 • Public • Published

# string-mismatch

Algorithms for compare strings. Currently the list of available algorithms are:

Greedy Levenshtein Dice Coefficient
Complexity O(n*k) (k precision) O(n^2) O(nlog n)
Good Fast algorithm Always the optimal solution Is based in probabilities and is a really fast algorithm
Bad The solution is not the optimal Complexity is O(n^2) Impossible to see the differences between the strings
Use n^2 memory
Methods difference difference distance
distance distance
Operations for transform the string insertion insertion not apply
deletion deletion
substitution
Class name `Greedy` `Levenshtein` `DiceCoefficient`

Why use string-mismatch:

• Ease to install and start using it
• Modular library (use only what you want to use).
• Support for browser and node applications.
• Compatible with es5
• Not external dependencies.
• Completely documented.
• Coverage over 95%.

## Install

``````npm install --save string-mismatch
``````

## Getting started

``````### Nodejs application example
``````

How to use the library and see the differences between two strings:

``````const sm = require("string-mismatch");
const greedyInstance = new sm.Greedy();

var start = 'This is a test for see how work the library',
end   = 'This is a test for know how work the new library';

console.log(greedyInstance.differences(start, end));
``````

The result is an object array with the mismatch result. Each object with the next structure:

``````{
type: string, // type of sub-string:
//   'sub' -> substitution
//   'ins' -> insertion
//   'del' -> deletion
//   'eql' -> equal
value: string // value of the current sub-string
}
``````

The resulting string can be concatenated like the next example:

``````const sm = require("string-mismatch");
const greedyInstance = new sm.Greedy();

var start = 'This is a test for see how work the library',
end   = 'This is a test for know how work the new library';

function showResult(diffs) {
return diffs.reduce(function (text, value) {
switch (value.type) {
case 'del':
return text + '(-' + value.value + ')';
case 'ins':
return text + '(+' + value.value + ')';
case 'sub':
return text + '(-+' + value.value + ')';
case 'eql':
return text + value.value;
}
}, '');
}

console.log(showResult(greedyInstance.differences(start, end)));
/*
result:
This is a test for (-see)(+know) how work the (+new )library
*/
``````

This code can be tested in the project's examples. To run the examples use the next command:

``````npm start
``````

### Web application example

Import the library

``````<!--Greedy algorithm-->
<script src="lib/greedy.min.js" type="application/javascript"></script>
<!--Levenshtein algorithm-->
<script src="lib/levenshtein.min.js" type="application/javascript"></script>
``````

Example with greedy algorithm:

``````<script type="application/javascript">
var start = 'This is a test for see how work the library';
var end = 'This is a test for know how work the new library';
var alg = new Greedy(options);
var diffs = alg.differences(start, end);
console.log(diffs);
</script>
``````

Example with the levenshtein algorithm:

``````<script type="application/javascript">
var start = 'This is a test for see how work the library';
var end = 'This is a test for know how work the new library';
var alg = new Levenshtein(options);
var diffs = alg.differences(start, end);
console.log(diffs);
</script>
``````

## Testing code

``````npm test
``````

## Built With

• webpack - For build the project
• npm - Dependency Management
• jest - Jest framework for test

## Contributing

All contributions are welcome.

## Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

## Authors

• Guillermo González - Initial work - wil92

## Package Sidebar

### Install

`npm i string-mismatch`

### Repository

github.com/wil92/string-mismatch

133

2.1.1

Apache-2.0

104 kB

28