Нужно найти все места, где есть нужное слово.
string s = "<div>Здесь нам нужно заменить некоторый текст, текст, текст</div>";
var word = "текст";
var replaceTo = "ТЕКСТ";
var words = new List<int>();
int lastPos = 0;
int pos = 0;
do
{
pos = s.IndexOf(word, lastPos);
if (pos >= 0)
{
words.Add(pos);
lastPos = pos + word.Length;
}
}
while (pos >= 0);
А теперь уже можно сделать с ними всё что угодно - заменять хоть все, хоть по одному.
Например, замена первого слова
var result = s.Substring(0, words[0]) + replaceTo + s.Substring(words[0] + word.Length);
UPD. Можно вместо цикла найти слова с помощью регулярного выражения:
string s = "<div>Здесь нам нужно заменить некоторый текст, текст, текст</div>";
var word = "текст";
var replaceTo = "ТЕКСТ";
var words = new Regex(word).Matches(s).OfType<Match>().Select(match => match.Index).ToList();
var result = s.Substring(0, words[0]) + replaceTo + s.Substring(words[0] + word.Length);
Регекс может работать дольше, чем цикл.
Зато код поиска в одну строку!
Если нужны только слова целиком (не нужно искать "текстовый", например), то алгоритм поиска в цикле усложняется (проверять символ перед и после найденного текста, является ли пробел или пунктуация или ещё что-либо). А в регексе можно написать new Regex(@"\b" + word + @"\b").Matches(s), и регулярное выражение всё сделает само.