LastIndexOf() public method

public LastIndexOf ( String source, String value ) : int
source String
value String
return int
コード例 #1
0
ファイル: CompareInfoTest.cs プロジェクト: carrie901/mono
	void AssertLastIndexOf (string message, int expected, string source,
		string target, int idx, int len, CompareOptions opt, CompareInfo ci)
	{
		Assert.AreEqual (expected, ci.LastIndexOf (source, target, idx, len, opt), message);
	}
コード例 #2
0
        private static int AsteriskSkip(string Pattern, string Source, int SourceEndIndex, CompareMethod CompareOption, CompareInfo ci)
        {
            int num2;
            int num4;
            int num3 = Strings.Len(Pattern);
            while (num4 < num3)
            {
                bool flag;
                bool flag2;
                bool flag3;
                switch (Pattern[num4])
                {
                    case '-':
                        if (Pattern[num4 + 1] == ']')
                        {
                            flag2 = true;
                        }
                        break;

                    case '!':
                        if (Pattern[num4 + 1] == ']')
                        {
                            flag2 = true;
                        }
                        else
                        {
                            flag3 = true;
                        }
                        break;

                    case '[':
                        if (flag)
                        {
                            flag2 = true;
                        }
                        else
                        {
                            flag = true;
                        }
                        break;

                    case ']':
                        if (flag2 || !flag)
                        {
                            num2++;
                            flag3 = true;
                        }
                        flag2 = false;
                        flag = false;
                        break;

                    case '*':
                        if (num2 > 0)
                        {
                            CompareOptions ordinal;
                            if (flag3)
                            {
                                num2 = MultipleAsteriskSkip(Pattern, Source, num2, CompareOption);
                                return (SourceEndIndex - num2);
                            }
                            string str = Pattern.Substring(0, num4);
                            if (CompareOption == CompareMethod.Binary)
                            {
                                ordinal = CompareOptions.Ordinal;
                            }
                            else
                            {
                                ordinal = CompareOptions.IgnoreWidth | CompareOptions.IgnoreKanaType | CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase;
                            }
                            return ci.LastIndexOf(Source, str, ordinal);
                        }
                        break;

                    case '?':
                    case '#':
                        if (flag)
                        {
                            flag2 = true;
                        }
                        else
                        {
                            num2++;
                            flag3 = true;
                        }
                        break;

                    default:
                        if (flag)
                        {
                            flag2 = true;
                        }
                        else
                        {
                            num2++;
                        }
                        break;
                }
                num4++;
            }
            return (SourceEndIndex - num2);
        }
コード例 #3
0
ファイル: TextFindEngine.cs プロジェクト: sjyanxin/WPFSource
        // Returns the index and length of the first or last occurance of one string 
        // within another string.
        private static int StandardMatchIndexCalculation(string textString, string findPattern, bool matchWholeWord, bool matchLast, bool ignoreCase, CompareInfo compareInfo, bool hasPreceedingSeparatorChar, bool hasFollowingSeparatorChar, out int matchLength) 
        {
            CompareOptions options = ignoreCase ? CompareOptions.IgnoreCase : 0;
            int matchIndex = -1;
            int searchStart = 0; 
            int searchLength = textString.Length;
 
            matchLength = 0; 

            while (searchLength > 0) 
            {
                matchIndex = matchLast ?
                             compareInfo.LastIndexOf(textString, findPattern, searchStart + searchLength - 1, searchLength, options) :
                             compareInfo.IndexOf(textString, findPattern, searchStart, searchLength, options); 

                matchLength = findPattern.Length; 
 
                if (matchIndex == -1)
                { 
                    break;
                }

                if (!matchWholeWord || IsAtWordBoundary(textString, matchIndex, matchLength, hasPreceedingSeparatorChar, hasFollowingSeparatorChar)) 
                {
                    break; 
                } 

                if (matchLast) 
                {
                    searchStart = 0;
                    searchLength = matchIndex + matchLength - 1;
                } 
                else
                { 
                    searchStart = matchIndex + 1; 
                    searchLength = textString.Length - searchStart;
                } 

                matchIndex = -1;
            }
 
            return matchIndex;
        } 
コード例 #4
0
ファイル: CompareInfoTest.jvm.cs プロジェクト: carrie901/mono
	void AssertLastIndexOf (string message, int expected, string source,
		char target, int idx, int len, CompareOptions opt, CompareInfo ci)
	{
		AssertEquals (message, expected,
			ci.LastIndexOf (source, target, idx, len, opt));
	}