来自其他编程语言,String.replace()通常替换所有匹配的字符串.但是,javascript/typescript不是这种情况.我在网上找到了许多使用正则表达式的javascript解决方案.由于特殊字符,我立即遇到了这个解决方案的问题.我怀疑有一种方法可以用正则表达式来解决这个问题,但我不是一个正则表达式专家.正如我之前所做的那样,我创造了自己的方法.
也许有一些方法可以通过使用自定义StringBuilder()类来提高性能.我欢迎任何想法.
public static Replace = function (originalString: string, oldValue: string, newValue: string, ignoreCase: boolean = false) {
//
// if invalid data, return the original string
//
if ((originalString == null) || (oldValue == null) || (newValue == null) || (oldValue.length == 0) )
return (originalString);
//
// do text replacement
//
var dest = "";
var source: string = originalString;
if (ignoreCase)
{
source = source.toLocaleLowerCase();
oldValue = oldValue.toLowerCase();
} …Run Code Online (Sandbox Code Playgroud) TypeScript 中的数字变量是浮点型。但是,有时需要将变量限制为类似于其他语言中可用的特定大小或类型。例如,int8、int16、int32、uint8、uint16 和 uint32 类型。我实现的方法将数字转换为无符号整数,并对所需的位执行按位“AND”。根据所需类型是否有符号,它将执行按位“或”。如果有错误,更好的方法,或者更高效的方法,欢迎留言。
export class CONVERT
{
static NumberToUint32(x:number):number
{
return x >>> 0;
}
static NumberToUint16(x:number):number
{
return this.NumberToUint32(x) & 0xFFFF;
}
static NumberToUint8(x:number):number
{
return this.NumberToUint32(x) & 0xFF;
}
static NumberToInt32(x:number): number
{
return x >> 0;
}
static NumberToInt16(x:number): number
{
let r: number = 0;
let n = this.NumberToUint16(x);
if(n & 0x8000)
r = 0xFFFF8000|(n&0x7FFF);
else
r = n;
return(r);
}
static NumberToInt8(x:number): number
{
let r: number = 0;
let n = this.NumberToUint8(x); …Run Code Online (Sandbox Code Playgroud)