Beispiel #1
0
        public SDKString concat(SDKString str)
        {
            sbyte     encoding1 = (sbyte)this.getEncoding();
            sbyte     encoding2 = (sbyte)str.getEncoding();
            SDKString dstString = new SDKString();

            dstString.m_encoding = (int)encoding1 == (int)encoding2 || encoding2 == (sbyte)1 ? encoding1 : (sbyte)0;
            dstString.allocNewData((int)this.m_length + (int)str.m_length);
            int dstOffset = SDKString.copyStringData(this, 0, dstString, 0, (int)this.m_length);

            SDKString.copyStringData(str, 0, dstString, dstOffset, (int)str.m_length);
            return(dstString);
        }
Beispiel #2
0
        public SDKString replace(SDKString[] repl)
        {
            SDKString dstString = new SDKString();

            dstString.m_encoding = (sbyte)this.getEncoding();
            dstString.m_offset   = 0;
            int num1 = 0;

            for (int index1 = 0; index1 != (int)this.m_length; ++index1)
            {
                if (this.charCodeAt(index1) == (ushort)92)
                {
                    ++index1;
                    if (index1 < (int)this.m_length)
                    {
                        short num2 = (short)this.charCodeAt(index1);
                        if (num2 == (short)92)
                        {
                            --num1;
                        }
                        else if (num2 >= (short)48 && num2 <= (short)90)
                        {
                            int index2 = (int)num2 - 48;
                            if (repl[index2].getEncoding() != dstString.getEncoding())
                            {
                                dstString.m_encoding = (sbyte)0;
                            }
                            num1 += repl[index2].Length() - 2;
                        }
                    }
                }
            }
            dstString.allocNewData((int)this.m_length + num1);
            int srcOffset = 0;
            int dstOffset = 0;

            for (int index1 = 0; index1 != (int)this.m_length; ++index1)
            {
                if (this.charCodeAt(index1) == (ushort)92)
                {
                    dstOffset += SDKString.copyStringData(this, srcOffset, dstString, dstOffset, index1 - srcOffset);
                    srcOffset  = index1++;
                    if (index1 < (int)this.m_length)
                    {
                        short num2 = (short)this.charCodeAt(index1);
                        if (num2 == (short)92)
                        {
                            srcOffset = index1;
                        }
                        else if (num2 >= (short)48 && num2 <= (short)90)
                        {
                            int       index2    = (int)num2 - 48;
                            SDKString srcString = repl[index2];
                            dstOffset += SDKString.copyStringData(srcString, 0, dstString, dstOffset, (int)srcString.m_length);
                            srcOffset  = index1 + 1;
                        }
                    }
                }
            }
            SDKString.copyStringData(this, srcOffset, dstString, dstOffset, (int)this.m_length - srcOffset);
            return(dstString);
        }