private SubStrings ParseSupportsAsteriskAndEscaping(string searchString) { var subStrings = new SubStrings(); for (var index = 0; index < searchString.Length; index++) { var c = searchString[index]; switch (c) { case '*': if (index < searchString.Length - 1 && searchString[index + 1] == '*') { subStrings.AddCharacter(c); index++; } else { subStrings.FinishCurrent(); } break; default: subStrings.AddCharacter(c); break; } } subStrings.FinishCurrent(); return(subStrings); }
public ParsedSearchString Parse(string searchString) { var subStrings = new SubStrings(); bool inEscapeSequence = false; foreach (var c in searchString) { switch (c) { case '\\': if (inEscapeSequence) { subStrings.AddCharacter('\\'); inEscapeSequence = false; } else { inEscapeSequence = true; } break; case '*': if (inEscapeSequence) { subStrings.AddCharacter('*'); inEscapeSequence = false; } else { subStrings.FinishCurrent(); } break; default: inEscapeSequence = false; subStrings.AddCharacter(c); break; } } subStrings.FinishCurrent(); // Look for the longest sub string as the main search string. int mainIndex = subStrings.List.IndexOf(subStrings.List.OrderByDescending(x => x.Length).FirstOrDefault()); var mainEntry = subStrings.List.Any() ? new ParsedSearchString.Entry { Text = subStrings.List[mainIndex], Index = mainIndex } : new ParsedSearchString.Entry { Text = "", Index = -1 }; var otherEntries = Enumerable .Range(0, subStrings.List.Count) .Where(i => i != mainIndex) .Select(i => new ParsedSearchString.Entry { Text = subStrings.List[i], Index = i }) .ToList(); return(new ParsedSearchString(mainEntry, otherEntries.Where(e => e.Index < mainEntry.Index), otherEntries.Where(e => e.Index > mainEntry.Index))); }
private SubStrings ParseNoSpecialCharacters(string searchString) { var subStrings = new SubStrings(); foreach (var c in searchString) { subStrings.AddCharacter(c); } subStrings.FinishCurrent(); return(subStrings); }
public ParsedSearchString Parse(string searchString) { var subStrings = new SubStrings(); bool inEscapeSequence = false; foreach (var c in searchString) { switch (c) { case '\\': if (inEscapeSequence) { subStrings.AddCharacter('\\'); inEscapeSequence = false; } else { inEscapeSequence = true; } break; case '*': if (inEscapeSequence) { subStrings.AddCharacter('*'); inEscapeSequence = false; } else { subStrings.FinishCurrent(); } break; default: if (inEscapeSequence) { throw new RecoverableErrorException(string.Format("Invalid escape character sequence \"\\{0}\"",c)); } inEscapeSequence = false; subStrings.AddCharacter(c); break; } } if (inEscapeSequence) { throw new RecoverableErrorException("Unterminated escape character sequence"); } subStrings.FinishCurrent(); // Look for the longest sub string as the main search string. int mainIndex = subStrings.List.IndexOf(subStrings.List.OrderByDescending(x => x.Length).FirstOrDefault()); var mainEntry = subStrings.List.Any() ? new ParsedSearchString.Entry {Text = subStrings.List[mainIndex], Index = mainIndex} : new ParsedSearchString.Entry {Text = "", Index = -1}; var otherEntries = Enumerable .Range(0, subStrings.List.Count) .Where(i => i != mainIndex) .Select(i => new ParsedSearchString.Entry { Text = subStrings.List[i], Index = i }) .ToList(); return new ParsedSearchString(mainEntry, otherEntries.Where(e => e.Index < mainEntry.Index), otherEntries.Where(e => e.Index > mainEntry.Index)); }
protected override void ManageParseData(WWW www) { strings.AddRange(Regex.Split(www.text, "#END#")); strings.RemoveAt(strings.Count - 1); for (int i = 0; i < strings.Count; i++) { Debug.Log("STRING: " + i + " content : " + strings[i]); } //Debug.Log("Downloading Tooltip Language parts from: " + FINISHED_URL); //reset database: DataBase.Data = new Dev6.CustomDict <string, string>(); for (int i = 0; i < strings.Count; i++) { SubStrings.AddRange(Regex.Split(strings[i].ToString(), "#KEY#")); DataBase.Data.Add(SubStrings[SubStrings.Count - 2].ToString(), SubStrings[SubStrings.Count - 1].ToString()); } }
private SubStrings ParseSupportsAsterisk(string searchString) { var subStrings = new SubStrings(); foreach (var c in searchString) { switch (c) { case '*': subStrings.FinishCurrent(); break; default: subStrings.AddCharacter(c); break; } } subStrings.FinishCurrent(); return(subStrings); }