2015-03-23 5 views
0

Я застреваю в попытке напечатать слова, содержащие только строчные буквы a-z. Я уже раздел в введенную строку, если она содержит любое число 0-9, и если он содержит заглавную букву:C# проверить, содержит ли вход только строчные буквы a-z

String[] textParts; 
    textParts = text.Split(delimChars); 
    for (int i = 0; i < textParts.Length; i++) //adds s to words list and checks for capitals 
    { 
     String s = textParts[i]; 
     bool valid = true; 

     foreach (char c in textParts[i]) 
     { 
      if (char.IsUpper(c)) 
      { 
       valid = false; 
       break; 
      } 

      if (c >= '0' && c <= '9') 
      { 
       valid = false; 
       break; 
      } 

      if (char.IsPunctuation(c)) 
      { 
       valid = false; 
       break; 
      } 

     } 
     if (valid) pageIn.words.Add(s); 

Это мой код до сих пор. Последняя часть, которую я пытаюсь проверить, чтобы увидеть, содержит ли слово какие-либо знаки препинания (это не работает), есть ли более простой способ сделать это и как я могу заставить последнюю часть моего кода работать?

P.S. Мне не очень удобно использовать Regex.

Большого спасибо, Ellie

+0

http://stackoverflow.com/questions/3434120/regex-for-single-lower-case-word#3434125, даже если вам не удобно, для текущего случая я считаю, что регулярное выражение - именно то, что вы хотели бы. – Crypth

+0

У меня было ужасное чувство, что это будет! Если я использую Regex, значит ли это, что я делаю одну проверку (это строчная буква?) И все? Все остальное будет проигнорировано? (спасибо) – Ellie

ответ

-1

Я не уверен, получаю ли я на ваш вопрос правильно, но не должен следующие работы?

for (int i = 0; i < textParts.Length; i++) //adds s to words list and checks for capitals 
{ 
    String s = textParts[i]; 

    if(s.Equals(s.ToLower())) 
    { 
     // string is all lower 
    } 
} 
+0

(Извините, мой английский Написание навыков не фантастический ха-ха!) Я пытаюсь создать что-то, что не превратит их в нижний регистр, их нужно ввести иначе, GET RID. Поэтому, если он содержит число, удалите строку, если она содержит букву верхнего регистра, удалите строку, поэтому, если она содержит что-либо, что не является строчной буквой, УДАЛИТЕ СТРОКУ. У меня просто проблема, проверяющая, содержит ли она какие-либо знаки препинания. – Ellie

0
var regex = new Regex("^[a-z]+$"); 
if (!regex.IsMatch(input)) 
{ 
      // is't not only lower case letters, remove input 
} 
+0

Да! Спасибо, вам придется немного почитать в Regex! Спасибо за вашу помощь :) – Ellie

+0

Не забудьте принять ответ, если вы считаете, что это правильные ответы. – Crypth

1

Без регулярных выражений, youu можно использовать LINQ (может быть менее производительным)

bool isOnlyLower = s.Count(c => Char.IsLower(c)) == s.Length; 

Count будет получить количество полукокса, которые находятся в нижней в следующей строке. Если он соответствует длине строки, строка состоит только из строчных букв.

Смежные вопросы