示例#1
0
        public ICharTermAttribute Append(ICharSequence csq, int start, int end)
        {
            if (csq == null)
            {
                csq = new StringCharSequenceWrapper("null");
            }

            int len = end - start, csqlen = csq.Length;

            if (len < 0 || start > csqlen || end > csqlen)
            {
                throw new IndexOutOfRangeException();
            }

            if (len == 0)
            {
                return(this);
            }

            ResizeBuffer(TermLength + len);

            while (start < end)
            {
                TermBuffer[TermLength++] = csq.CharAt(start++);
            }

            return(this);
        }
示例#2
0
        private static ICharSequence EscapeChar(ICharSequence str, CultureInfo locale)
        {
            if (str == null || str.Length == 0)
            {
                return(str);
            }

            ICharSequence buffer = str;

            // regular escapable Char for terms
            for (int i = 0; i < escapableTermChars.Length; i++)
            {
                buffer = ReplaceIgnoreCase(buffer, locale.TextInfo.ToLower(escapableTermChars[i]),
                                           "\\", locale);
            }

            // First Character of a term as more escaping chars
            for (int i = 0; i < escapableTermExtraFirstChars.Length; i++)
            {
                if (buffer[0] == escapableTermExtraFirstChars[i][0])
                {
                    buffer = new StringCharSequenceWrapper("\\" + buffer[0]
                                                           + buffer.SubSequence(1, buffer.Length).ToString());
                    break;
                }
            }

            return(buffer);
        }
示例#3
0
        public virtual void TestFromCharSequence()
        {
            for (int i = 0; i < 100; i++)
            {
                ICharSequence s  = new StringCharSequenceWrapper(TestUtil.RandomUnicodeString(Random()));
                string        s2 = (new BytesRef(s)).Utf8ToString();
                Assert.AreEqual(s, s2);
            }

            // only for 4.x
            Assert.AreEqual("\uFFFF", (new BytesRef("\uFFFF")).Utf8ToString());
        }