Есть у меня большой текст и моя задача в том чтобы при вводе что-то в поле ввода программа начала искать совпадения с текстом и возвращала index
совпадений.
Вот мой код -
public class MainMenu : MonoBehaviour
{
[TextArea]
public static string FullText;
public List<int> MatchIndex;
/*------------------------------ Functions ------------------------------*/
public void FindText(string PartOfText)
{
if (!string.IsNullOrEmpty(PartOfText))
{
if (FullText.Contains(PartOfText))
{
MatchIndex.Add(FullText.IndexOf(PartOfText));
Debug.Log("Есть совпадения.");
}
else
{
Debug.Log("Совпадения не найдены.");
}
}
}
}
Но тут проблема в том что он находит только первое совпадение.
Как мне найти все совпадения?
Можно регуляркой.
Указываем пространство имён:
using System.Text.RegularExpressions;
Код:
var pattern = Regex.Escape(search);
var matches = Regex.Matches(input, pattern);
var indexes = matches.OfType<Match>().Select(m => m.Index).ToList();
input
- текст, в котором ищем,
search
- что ищем,
indexes
- результат, список индексов.
public void FindText(string PartOfText)
{
if (string.IsNullOrEmpty(PartOfText) || string.IsNullOrEmpty(FullText)) { return; }
for (int i = FullText.IndexOf(PartOfText); i > -1; i = FullText.IndexOf(PartOfText, i + 1)){Debug.Log(i);}
}
И я бы засунул это всё дело в корутину с yield return в цикле.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня в диалогом окне есть 5 элементов xaml texbox у каждый элемент имеет свою валидацию
Компилирую его стандартным компилятором NET который поставляется с фреймворкрм и все работает,раздел создается,а если компилировать из под...
Есть файл, в котором лежат строки вида "слово-перевод"Разделителем в данном случае работает "-"
Собственно, записывает в файл всё, кроме последней записи в строке DataGridView (получается 5, а должно быть 6)