string-mismatch
v3.0.2
Published
All mismatch between two strings
Downloads
1,007
Maintainers
Readme
string-mismatch library
The library contain the next string comparison algorithms:
| |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%.
Library documentation
https://wil92.github.io/string-mismatch/
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
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
CHANGELOG
License
This project is licensed under the MIT License - see the LICENSE.md file for details