private static List <SegmentRange> GetRangeList(List <string> idsRange) { var segmentsRangeList = new List <SegmentRange>(); foreach (var idRange in idsRange) { if (idRange.Contains("-")) { var minValue = idRange.Substring(0, idRange.IndexOf('-')); var maxValue = idRange.Substring(idRange.IndexOf('-') + 1); var segmentRange = new SegmentRange { Min = Parse(minValue), Max = Parse(maxValue) }; segmentsRangeList.Add(segmentRange); } } return(segmentsRangeList); }
public static bool IsInFuzzyRange(DisplayFilterRowInfo row, string fuzzyMin, string fuzzyMax) { try { var segmentMatchPercent = Parse(row.SegmentPair.Properties.TranslationOrigin.MatchPercent.ToString()); var fuzzyRange = new SegmentRange { Min = Parse(fuzzyMin), Max = Parse(fuzzyMax) }; if (Enumerable.Range(fuzzyRange.Min, fuzzyRange.Max - fuzzyRange.Min + 1).Contains(segmentMatchPercent)) { return(true); } } catch (Exception e) { // ignored } return(false); }
/// <summary> /// Creates a new instance of Part /// </summary> /// <param name="allVertices">An array of all the vertex locations</param> /// <param name="shapeOffset">The point index of the shape. </param> /// <param name="partOffset">The ponit index of the part.</param> /// <param name="featureType">The type of features.</param> public PartRange(double[] allVertices, int shapeOffset, int partOffset , FeatureTypes featureType): base(allVertices, shapeOffset, partOffset) { _segments = new SegmentRange(this, featureType); _featureType = featureType; }
private List <SegmentRange> CollectConcordanceMatchRanges(Segment segment, string searchString) { var words = GetListOfSimpleWords(searchString); var concordanceMatchRanges = new List <SegmentRange>(); foreach (var word in words) { var run = 0; var searchLength = word.Length; var wordBuilder = string.Empty; foreach (var element in segment.Elements) { var text = element as Text; if (text == null || string.IsNullOrEmpty(text.Value)) { continue; } var index = text.Value.IndexOf(word, StringComparison.OrdinalIgnoreCase); while (index >= 0 && index < text.Value.Length) { var segmentRange = new SegmentRange(run, index, index + searchLength - 1); #region | test boundry | var prefixBoundry = true; //test that the beginning is a boundry character if (index > 0) { var c = Convert.ToChar(text.Value.Substring(index - 1, 1)); if (!char.IsWhiteSpace(c) && !char.IsPunctuation(c)) { prefixBoundry = false; } } else if (wordBuilder != string.Empty) { var c = Convert.ToChar(wordBuilder.Substring(wordBuilder.Length - 1)); if (!char.IsWhiteSpace(c) && !char.IsPunctuation(c)) { prefixBoundry = false; } } var suffixBountry = true; if (index + searchLength + 1 < text.Value.Length) { var c = Convert.ToChar(text.Value.Substring(index + searchLength, 1)); if (!char.IsWhiteSpace(c) && !char.IsPunctuation(c)) { suffixBountry = false; } } #endregion if (prefixBoundry && suffixBountry) { concordanceMatchRanges.Add(segmentRange); } index += searchLength; if (index < text.Value.Length) { index = text.Value.IndexOf(word, index, StringComparison.OrdinalIgnoreCase); } } run++; wordBuilder += text.Value; } } return(concordanceMatchRanges); }