Это проблема чувствительности к регистру. При первой попытке проверить ветку develop
:
>git checkout develop
error: pathspec 'develop' did not match any file(s) known to git.
Нет локальной ветки с именем develop
. Из-за проблем с чувствительностью к регистру при хранении информации о ветвях локальная ветвь с именем Develop
может быть идентифицирована как совпадающая с именем ветвления develop
, если она была сохранена как свободная ссылка. Однако, на данный момент, ни не существует, так что это спорный вопрос.
>git checkout Develop
Switched to a new branch 'Develop'
Branch 'Develop' set up to track remote branch 'Develop' from 'origin'.
Нет локальной ветки с именем Develop
. Как и мы узнали из предыдущей команды, здесь нет ни одного по имени develop
. Однако есть удаленная ветвь origin/Develop
. Итак, git предполагает, что вы хотите это создать, поэтому он создает ветку Develop
, которая отслеживает origin/Develop
.
Итак, при следующем запуске:
>git checkout develop
Switched to branch 'develop'
Опять git ищет локальную ветку с именем develop
. У тебя все еще нет ни одного. Тем не менее, у вас есть ветвь Develop
, и поскольку git использовал свободную ссылку для хранения этой информации в нечувствительной к регистру файловой системе, было обнаружено , что информация.
К сожалению, git по-прежнему не понимает эту ситуацию: когда вы запросили ветку develop
, она обнаружила информацию о Develop
. Но, несмотря на это, имена веток в git чувствительны к регистру. И поскольку на самом деле нет ветви с именем develop
(нижний регистр), вы сейчас находитесь в странном состоянии, когда на самом деле вы не находитесь ни в одной ветви, о которой знает git.
Только буквы:
Regex.IsMatch(input, @"^[a-zA-Z]+$");
Только буквы и цифры:
Regex.IsMatch(input, @"^[a-zA-Z0-9]+$");
Только буквы, цифры и подчеркивание:
Regex.IsMatch(input, @"^[a-zA-Z0-9_]+$");
Найдите, что метод проверяет, если символ является буквой, числом или пространством, иначе присоедините подчеркивание (Быть свободными к измененному согласно Вашим потребностям)
public String CleanStringToLettersNumbers(String data)
{
var result = String.Empty;
foreach (var item in data)
{
var c = '_';
if ((int)item >= 97 && (int)item <= 122 ||
(int)item >= 65 && (int)item <= 90 ||
(int)item >= 48 && (int)item <= 57 ||
(int)item == 32)
{
c = item;
}
result = result + c;
}
return result;
}
Только буквы:
Regex.IsMatch(theString, @"^[\p{L}]+$");
Буквы и цифры:
Regex.IsMatch(theString, @"^[\p{L}\p{N}]+$");
Буквы, цифры и подчеркивание:
Regex.IsMatch(theString, @"^[\w]+$");
Обратите внимание, что эти шаблоны также соответствуют международным символам (в отличие от использования az
конструкция).
bool result = input.All(Char.IsLetter);
bool result = input.All(Char.IsLetterOrDigit);
bool result = input.All(c=>Char.IsLetterOrDigit(c) || c=='_');
Вы можете перебирать символы строки и проверять их с помощью метода Char IsLetter но вы также можете проделать трюк, используя метод String IndexOfAny для поиска других символов, которые не должны быть в строке.
Перебирать символы строк и использовать функции 'Char' называются 'IsLetter' и 'IsDigit'.
Если вам нужно что-то более конкретное - используйте класс Regex.
Я думаю, что это хороший случай для использования регулярных выражений:
public bool IsAlpha(string input)
{
return Regex.IsMatch(input, "^[a-zA-Z]+$");
}
public bool IsAlphaNumeric(string input)
{
return Regex.IsMatch(input, "^[a-zA-Z0-9]+$");
}
public bool IsAlphaNumericWithUnderscore(string input)
{
return Regex.IsMatch(input, "^[a-zA-Z0-9_]+$");
}