botbuilder-core
Version:
Core components for Microsoft Bot Builder. Components in this library can run either in a browser or on the server.
66 lines (60 loc) • 1.8 kB
text/typescript
/**
* @module botbuilder
*/
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
/**
* Helper class containing string utility methods.
*/
export class StringUtils {
/**
* Truncate string with ...
*
* @param text Text.
* @param length Length to truncate text.
* @returns Original string modified.
*/
static ellipsis(text: string, length: number): string {
text = text || '';
if (text.length <= length) {
return text;
}
return `${text.substr(0, length)}...`;
}
/**
* UniqueHash - create a unique hash from a string.
*
* @remarks
* The source for this function was derived from the following article:
*
* https://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/
* @param text Text to hash.
* @returns A string which is an unique hash.
*/
static hash(text: string): string {
const length = text.length;
let hash = 0;
for (let i = 0; i < length; i++) {
const chr = text.charCodeAt(i);
hash = (hash << 5) - hash + chr;
hash |= 0; // Convert to 32 bit integer
}
return hash.toString();
}
/**
* EllipsisHash - create truncated string with unique hash for the truncated part.
*
* @param text Text to truncate.
* @param length Length to truncate at.
* @returns The truncated string with unique hash for the truncated part.
*/
static ellipsisHash(text: string, length: number): string {
text = text || '';
if (text.length <= length) {
return text;
}
return `${this.ellipsis(text, length)}${this.hash(text)}`;
}
}