Find Replace first whole word
public String ReplaceWholeWord(String s, String word, String bywhat)
{
char firstLetter = word[0];
StringBuilder sb = new StringBuilder();
bool previousWasLetterOrDigit = false;
int i = 0;
s = s + " ";
while (i < s.Length - word.Length + 1)
{
char ch = '~';
if (!string.IsNullOrEmpty(Convert.ToString(s.Substring(i + word.Length, 1)).Trim()))
{
ch=Convert.ToChar(Convert.ToString(s.Substring(i + word.Length, 1)).Trim());
}
bool wordFound = false;
char c = s[i];
if (c == firstLetter)
if (!previousWasLetterOrDigit)
//if ((s.Substring(i, word.Length).Equals(word)) && (Convert.ToString(s.Substring(i + word.Length, 1)).Trim() == string.Empty || Convert.ToString(s.Substring(i + word.Length, 1)).Trim() == "\n"))
if ((s.Substring(i, word.Length).Equals(word)) && !Char.IsLetterOrDigit(ch))
{
wordFound = true;
bool wholeWordFound = true;
if (s.Length > i + word.Length)
{
if (Char.IsLetterOrDigit(s[i + word.Length]))
wholeWordFound = false;
}
if (wholeWordFound)
sb.Append(bywhat);
else
sb.Append(word);
i += word.Length;
break;
}
if (!wordFound)
{
previousWasLetterOrDigit = Char.IsLetterOrDigit(c);
sb.Append(c);
i++;
}
}
if (s.Length - i > 0)
sb.Append(s.Substring(i));
return sb.ToString();
}
{
char firstLetter = word[0];
StringBuilder sb = new StringBuilder();
bool previousWasLetterOrDigit = false;
int i = 0;
s = s + " ";
while (i < s.Length - word.Length + 1)
{
char ch = '~';
if (!string.IsNullOrEmpty(Convert.ToString(s.Substring(i + word.Length, 1)).Trim()))
{
ch=Convert.ToChar(Convert.ToString(s.Substring(i + word.Length, 1)).Trim());
}
bool wordFound = false;
char c = s[i];
if (c == firstLetter)
if (!previousWasLetterOrDigit)
//if ((s.Substring(i, word.Length).Equals(word)) && (Convert.ToString(s.Substring(i + word.Length, 1)).Trim() == string.Empty || Convert.ToString(s.Substring(i + word.Length, 1)).Trim() == "\n"))
if ((s.Substring(i, word.Length).Equals(word)) && !Char.IsLetterOrDigit(ch))
{
wordFound = true;
bool wholeWordFound = true;
if (s.Length > i + word.Length)
{
if (Char.IsLetterOrDigit(s[i + word.Length]))
wholeWordFound = false;
}
if (wholeWordFound)
sb.Append(bywhat);
else
sb.Append(word);
i += word.Length;
break;
}
if (!wordFound)
{
previousWasLetterOrDigit = Char.IsLetterOrDigit(c);
sb.Append(c);
i++;
}
}
if (s.Length - i > 0)
sb.Append(s.Substring(i));
return sb.ToString();
}
Comments
Post a Comment