@c_s_v_s_subrahmanyam/string-utils
Version:
A comprehensive utility library for advanced string operations.
94 lines (79 loc) • 2.92 kB
JavaScript
function findUniqueWords(str) {
const words = str.toLowerCase().match(/\b\w+\b/g) || [];
return [...new Set(words)];
}
function getShortestWord(str) {
const words = str.match(/\b\w+\b/g) || [];
return words.reduce((shortest, word) => word.length < shortest.length ? word : shortest, words[0] || '');
}
function getLongestWord(str) {
const words = str.match(/\b\w+\b/g) || [];
return words.reduce((longest, word) => word.length > longest.length ? word : longest, words[0] || '');
}
function countSentences(str) {
const sentences = str.split(/[.!?]+/).filter(Boolean);
return sentences.length;
}
function getWordsStartingWithConsonants(str) {
return (str.match(/\b[bcdfghjklmnpqrstvwxyz]\w*\b/gi) || []);
}
function getWordsStartingWithVowels(str) {
return (str.match(/\b[aeiou]\w*\b/gi) || []);
}
function countLines(str) {
return str.split(/\r?\n/).length;
}
function isAnagram(str1, str2) {
const format = str => str.toLowerCase().replace(/[^a-z0-9]/g, '').split('').sort().join('');
return format(str1) === format(str2);
}
function isPangram(str) {
const alphabet = 'abcdefghijklmnopqrstuvwxyz';
const lowerStr = str.toLowerCase();
return [...alphabet].every(char => lowerStr.includes(char));
}
function reverseSubstring(str, substring) {
const reversed = substring.split('').reverse().join('');
return str.replace(substring, reversed);
}
function isSubstring(str, substring) {
return str.includes(substring);
}
function generateRandomSubstring(str, length) {
if (length > str.length) return '';
const startIndex = Math.floor(Math.random() * (str.length - length + 1));
return str.substring(startIndex, startIndex + length);
}
function generateRandomString(length) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < length; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
}
function generatePasswordSuggestions(base) {
const specialChars = '!@#$%^&*';
const randomSpecialChar = specialChars.charAt(Math.floor(Math.random() * specialChars.length));
return [
`${base}${randomSpecialChar}${Math.random().toString(36).slice(-2)}`,
`${Math.random().toString(36).slice(-2)}${base.toUpperCase()}${randomSpecialChar}`,
`${randomSpecialChar}${base.toLowerCase()}${Math.random().toString(36).slice(-2)}`
];
}
module.exports = {
findUniqueWords,
getShortestWord,
getLongestWord,
countSentences,
getWordsStartingWithConsonants,
getWordsStartingWithVowels,
countLines,
isAnagram,
isPangram,
reverseSubstring,
isSubstring,
generateRandomSubstring,
generateRandomString,
generatePasswordSuggestions
};