public static int WordPosition(int n, String s, ACharArray wordDelims) { var count = 0; var i = 0; var result = 0; while (i < s.Length && count != n) { /* skip over delimiters */ while ((i < s.Length) && (wordDelims.Contains(s[i]))) { i++; } /* if we're not beyond end of S, we're at the start of a word */ if (i < s.Length) { count++; } /* if not finished, find the end of the current word */ if (count != n) { while ((i < s.Length) && !(wordDelims.Contains(s[i]))) { i++; } } else { result = i; } } return(result); }
static AStringUtils() { Brackets = new ACharArray('(', ')', '[', ']', '{', '}'); StdWordDelims = new ACharArray(',', '.', ';', '/', '\\', ':', '\'', '"', '`', '(', ')', '[', ']', '{', '}'); StdWordDelims.AddRange(Brackets.TakeAll()); StdWordDelims.AddRange(ACharUtils.Range('\0', ' ').TakeAll()); }
public static Boolean IsWordPresent(String w, String s, ACharArray wordDelims) { var count = WordCount(s, wordDelims); for (var i = 1; i <= count; i++) { if (ExtractWord(i, s, wordDelims) == w) { return(true); } } return(false); }
public static ACharArray Range(Char first, Char second) { var ret = new ACharArray(); if (first == second) { return(ret); } var f = Math.Min(first, second); var e = Math.Max(first, second); for (var i = f; i <= e; i++) { ret.Add((Char)i); } return(ret); }
public static String ExtractWord(int n, String s, ACharArray wordDelims) { using (var sb = new UStringBuilder()) { var i = WordPosition(n, s, wordDelims); if (i == -1) { return(sb.ToString()); } /* find the end of the current word */ while (i < s.Length && !(wordDelims.Contains(s[i]))) { /* add the I'th character to result */ sb.Append(s[i]); i++; } return(sb.ToString()); } }
public static int WordCount(String source, ACharArray wordDelims) { var result = 0; var i = 0; var lev = source.Length; while (i < lev) { while (i < lev && wordDelims.Contains(source[i])) { i += 1; } if (i <= lev) { result += 1; } while (i < lev && !wordDelims.Contains(source[i])) { i += 1; } } return(result); }