Как я могу определить, не содержит ли строка символов? - PullRequest
2 голосов
/ 09 марта 2009

Как определить, имеет ли строка какой-либо альфа-символ или нет?

Другими словами, если в строке есть только пробелы, как мне рассматривать ее как пустую строку?

Ответы [ 11 ]

8 голосов
/ 09 марта 2009

Попробуйте:

if the_string.replace(" ", "") == "":
    the_string = ""

Если ваш язык поддерживает это, использование «trim», «strip» или «chomp» для удаления начальных / конечных пробелов тоже может быть хорошо ...

edit : Конечно, регулярные выражения также могут решить эту проблему: the_string.match("[^\s]") ... Или пользовательская функция ... Или любое количество вещей.

1012 * редактировать *: В Caml:

let rec empty_or_space = fun
      [] -> true
    | (x::xs) -> x == ` ` and empty_or_space xs;;

редактировать : По запросу в LOLPYTHON:

BTW OHAI
SO IM LIKE EMPTY WIT S OK?
    LOL IZ S EMPTIE? DUZ IT HAZ UNWHITESPACE CHAREZ /LOL
    IZ S KINDA LIKE ""?
        U TAKE YEAH

    IZ S LOOK AT EASTERBUNNY OK KINDA NOT LIKE " "?
        U TAKE MEH

    U TAKE EMPTY WIT S OWN __getslice__ WIT CHEEZBURGER AND BIGNESS S OK OK
4 голосов
/ 09 марта 2009

В C # вы должны использовать String.IsNullOrEmpty.

Чтобы рассматривать это как пустую строку, вы можете просто использовать "" или string.Empty; Чтобы проверить, если он пуст, есть функция .Trim.

3 голосов
/ 09 марта 2009

C ++

#include <string>

bool isEmptyOrBlank(const std::string& str)
{
   int len = str.size();
   if(len == 0) { return true; }

   for(int i=0;i<len;++i)
   {
       if(str[i] != ' ') { return false; }
   }
   return true;
}

C

#include <string.h>

int isEmptyOrBlank(const char* str)
{
  int i;
  int len;

  len = strlen(str);

  //String has no characters
  if(len == 0) { return 1; }

  for(i=0;i<len;++i)
  {
     if(str[i] != ' ') { return 0; }
  }

  return 1;
}

Java

boolean isEmptyOrBlank(String str)
{
  int len = str.length();
  if(len == 0) { return true; }

  for (int i = 0; i < len; ++i)
  {
    if (str.charAt(i) != ' ')  { return false; }
  }

  return true;
}

Вы поняли, вы можете сделать что-то подобное на любом языке.

2 голосов
/ 09 марта 2009

если вы говорите о .Net (C # или vb), то вы можете использовать Trim () для удаления пробелов.

1 голос
/ 09 марта 2009
if (s =~ /^\w*$/)

должно работать, если вы используете Perl.

Кто-нибудь получил версию LOLCODE?

0 голосов
/ 15 августа 2013
a = ' '
b = a if a.replace(' ','') else a.replace(' ','')
0 голосов
/ 09 марта 2009

Канонический метод, независимо от языка, заключается в обрезании строки (функции обрезки удаляют пробелы в начале и конце строки) и сравнении результата с пустой строкой:

if (trim(myString) == "") {
    // string contains no letters, numbers, or punctuation
}

Однако не все языки имеют встроенную функцию обрезки. Вот хороший универсальный пример для JavaScript, поскольку я еще не видел пример JS:

function trim(str) {
    return str.replace(/^\\s+|\\s+$/g, "");
}

(Ознакомьтесь с Постом Стивена Левитана о функциях обрезки JavaScript для подробного сравнения.)

Кроме того, вы можете использовать регулярное выражение для проверки "пустоты":

if (/^\s*$/.test(str)) {
    // string contains no letters, numbers, or punctuation
}

Опять же, не все языки поддерживают регулярные выражения. Проверьте свою языковую документацию.

0 голосов
/ 09 марта 2009

Добрые люди, Microsoft добавил этот метод

string myStr = "    ";    
string.IsNullOrWhiteSpace(myStr)

Это сделает работу, если вы используете .net.

string myStr = "    ";    
string.IsNullOrEmpty(myStr.Trim()));

Если вы используете .net 3.0 или выше, вы можете создать метод расширения, который вы можете использовать с любой строкой.

namespace StringExtensions
{
    public static class StringExtensionsClass
    {
        public static string IsWhiteSpace(this string s)
        {
            return string.IsNullOrEmpty(s.Trim()));
        }
    }
}

Затем вы можете использовать это как

string myStr = "    ";
if (myStr.IsWhiteSpace())
    Console.Write("It just whitespace");

Надеюсь, что это то, что вы ищете.

0 голосов
/ 09 марта 2009

Если вы действительно хотите трактовать строку, которая содержит только пробелы, как пустую строку (что не так, но это другая история), просто используйте любой метод зачистки, который обеспечивает ваш язык по выбору (string.lstrip () и string. rstrip () в Python, например) и проверьте, имеет ли результирующая строка длину 0.

0 голосов
/ 09 марта 2009

Если вы используете .NET, то у строкового типа есть метод .Trim(), который удаляет начальные и конечные пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...