Есть ли какой-либо метод, который позволяет нам возвращать true, если string a любит string b formality?Сравнение строки
экзамен:
"12:2".Like("*:*") = true
или
"what is your name?".Like("*is*name*?")=true
Спасибо!
Есть ли какой-либо метод, который позволяет нам возвращать true, если string a любит string b formality?Сравнение строки
экзамен:
"12:2".Like("*:*") = true
или
"what is your name?".Like("*is*name*?")=true
Спасибо!
Вы можете использовать эту следующую функцию с помощью регулярного выражения
Regex.IsMatch("string", "your expression")
Instance следующую строку следует вернуть true
:
Regex.IsMatch("12:2", "/[0-9]{2,}:[0-9]{1,}/")
Примечание: Таким образом, вы должны создать EXP каждый раз, когда для другой формат
Вы можете использовать следующий метод, чтобы проверить, соответствует ли данная строка шаблону, подобному DOS, с помощью подстановочных знаков (т. шаблон, который обозначает один символ с символом?? и ноль или более символов с «*»):
public static bool IsMatch(string str, string pattern)
{
string regexString = "^" + Regex.Escape(pattern).Replace("\\*", ".*").Replace("\\?", ".") + "$";
Regex regex = new Regex(regexString);
return regex.IsMatch(regexString);
}
Вы можете назвать это так:
bool match = IsMatch("what is your name?", "*is*name*?"); // Returns true
Вы можете использовать следующую не оптимизированный метод. Функция может не учитывать некоторые случаи, но я думаю, что это дает вам возможность начать с.
Другого возможным решением является для вас регулярных выражений
public static bool Like(string pattern, string str)
{
string[] words = pattern.Split('*').Where(w => w.Trim() != string.Empty).ToArray();
List<int> indeces = new List<int>();
for (int i = 0, l = words.Length; i < l; i++)
{
int wordIndex = str.IndexOf(words[i], StringComparison.OrdinalIgnoreCase);
if (wordIndex == -1)
return false;
else
indeces.Add(wordIndex);
}
List<int> sortedIndeces = indeces.ToList();
sortedIndeces.Sort();
for (int i = 0, l = sortedIndeces.Count; i < l; i++)
{
if (sortedIndeces[i] != indeces[i]) return false;
}
return true;
}
Good Luck
Нет, но вы можете посмотреть на регулярных выражениях –
Regex является то, что вам нужно – Vajura
является «*» вашим единственным оператором здесь? –