/**
* Replaces placeholders in a string with corresponding values from an object.
* @param template - The string containing placeholders to replace.
* @param data - An object containing key-value pairs to replace placeholders in the template string.
* @returns The formatted string with placeholders replaced by corresponding values from the data object.
*/
export function formatString(template: string, data: Record<string, any>): string {
return template.replace(/{(\w+)}/g, (match, key) => (data.hasOwnProperty(key) ? String(data[key]) : match));
}
/**
* Breaks a string into an array of phrases that are no longer than `N` characters
* @param str The string to break into phrases
* @param N The maximum number of characters per phrase
* @returns An array of phrases that are no longer than `N` characters
*/
export function breakStringIntoPhrases(str: string, N: number): string[] {
const words = str.split(" ");
const phrases: string[] = [];
let currentPhrase = "";
for (let i = 0; i < words.length; i++) {
const word = words[i];
if (currentPhrase.length + word.length + 1 <= N) {
// Add the word to the current phrase
currentPhrase += (currentPhrase.length > 0 ? " " : "") + word;
} else {
// Add the current phrase to the array and start a new phrase with the current word
phrases.push(currentPhrase);
currentPhrase = word;
}
}
// Add the last phrase to the array
if (currentPhrase.length > 0) {
phrases.push(currentPhrase);
}
return phrases;
}