Это довольно просто. Обратитесь к документам по кешированию за подробностями, но основная идея такова:
function getSetting($key)
{
return Cache::remember('setting:' . $key, 3600, function() use($key) {
return Setting::where('name',$key)->value('val');
});
}
Вы также можете кэшировать все настройки в одно значение кэша. В зависимости от того, сколько настроек есть и какую пропорцию вы используете в среднем запросе, это может быть или не быть хорошим подходом.
^(?!\s*$).+
будет соответствовать любой строке, содержащей хотя бы один непробельный символ.
Итак,
if (Regex.IsMatch(subjectString, @"^(?!\s*$).+")) {
// Successful match
} else {
// Match attempt failed
}
должен сделать это за вас.
^
привязывает поиск к началу строки.
(?! \ S * $)
, так называемый отрицательный просмотр вперед, утверждает, что невозможно сопоставить только пробельные символы до конца строки.
. +
тогда действительно будет соответствовать. Он будет соответствовать чему угодно (кроме новой строки) до конца строки. Если вы хотите разрешить перевод строки, вам нужно установить параметр RegexOptions.Singleline
.
Осталось от предыдущей версии вашего вопроса:
^\s*$
соответствует строкам, которые содержат только пробелы (или являются пустыми).
Полная противоположность:
^\S+$
соответствует только строкам, состоящим только из непробельных символов, минимум один символ.
Мы можем также использовать пространство в символьном классе в выражении, подобном одному из них:
(?!^[ ]*$)^\S+$
(?!^[ ]*$)^\S{1,}$
(?!^[ ]{0,}$)^\S{1,}$
(?!^[ ]{0,1}$)^\S{1,}$
в зависимости от языка/разновидности, который мы могли бы использовать.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?!^[ ]*$)^\S+$";
string input = @"
abcd
ABCD1234
#$%^&*()_+={}
abc def
ABC 123
";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
, Если Вы хотите упростить/изменить/исследовать выражение, оно было объяснено на верхней правой панели regex101.com . Если бы Вы хотели бы, можно также смотреть в эта ссылка , как она соответствовала бы против некоторых демонстрационных исходных данных.
<час>jex.im визуализирует регулярные выражения:
Вы также можете использовать:
public static bool IsWhiteSpace(string s)
{
return s.Trim().Length == 0;
}
Я думаю, что [] {4}
может сработать в примере, где вам нужно обнаружить 4 пробела.
То же самое с остальными: [] {1}
, [] {2}
и [] {3}
. Если вы хотите вообще обнаружить пустую строку, подойдет ^ [] * $
.
В .Net 4.0 можно также вызывать String.IsNullOrWhitespace
.
Утверждения для этого не нужны. \ S
должен работать сам по себе, поскольку он соответствует любым не пробельным символам.
Вы можете сделать одно из двух:
^ \ s * $
; совпадение означает, что строка "пуста"
^
, $
- начало и конец привязки строки соответственно \ s
- пробельный символ *
- повторение нуля или более из \ S
; вхождение означает, что строка НЕ "пуста"
\ S
- это инвертированная версия \ s
(обратите внимание на разницу в регистре) \ S
, следовательно, соответствует любому непробельному символу RegexOptions.ECMAScript
, \ s
соответствует таким вещам, как многоточие …