GVKun编程网logo

计算包含字母/数字的行数(excel计算含有字母数量)

21

如果您想了解计算包含字母/数字的行数的相关知识,那么本文是一篇不可错过的文章,我们将对excel计算含有字母数量进行全面详尽的解释,并且为您提供关于bash–根据包含数字和不包含数字的行对CSV中的行

如果您想了解计算包含字母/数字的行数的相关知识,那么本文是一篇不可错过的文章,我们将对excel计算含有字母数量进行全面详尽的解释,并且为您提供关于bash – 根据包含数字和不包含数字的行对CSV中的行进行排序、c – 确保字符串仅包含字母数字字符的更好方法?、c# – 检查密码包含字母数字和特殊字符、Java String - 查看字符串是否仅包含数字而不包含字母的有价值的信息。

本文目录一览:

计算包含字母/数字的行数(excel计算含有字母数量)

计算包含字母/数字的行数(excel计算含有字母数量)

我试图实现的目标很简单,但是很难解释,而且我不知道在postgres中它是否甚至有可能实现。我处于一个基本的水平。SELECT, FROM, WHERE,LEFT JOIN ON, HAVING,等等基本的东西。

我试图计算包含特定字母/数字的行数,并根据字母/数字显示该计数。

即有多少行的条目包含“ a / A”(不区分大小写)

我要查询的表是电影名称的列表。我要做的只是对“ az”和“ 0-9”进行分组并计数,然后输出总计。我可以依次运行36个查询:

SELECT filmname FROM films WHERE filmname ilike ''%a%''SELECT filmname FROM films WHERE filmname ilike ''%b%''SELECT filmname FROM films WHERE filmname ilike ''%c%''

然后在结果上运行pg_num_rows来找到我需要的数字,依此类推。

我知道喜欢的程度很高,而且我更喜欢,所以我宁愿避免这种情况。尽管数据(以下)在数据中具有大写和小写字母,但我希望结果集不区分大小写。例如,“盯着山羊的人”的a
/ A,t / T和s /
S不会在结果集中计算两次。我可以将表复制到辅助工作表中,所有数据都存放在较低的位置,并处理该查询的数据集(如果它使查询更简单或更容易构造)。

一个替代方案可能是像

SELECT sum(length(regexp_replace(filmname, ''[^X|^x]'', '''', ''g''))) FROM films;

每个字母组合一样,但是还是36个查询,36个数据集,如果我能在单个查询中获取数据,我会更喜欢。

这是我拍摄的14部电影的简短数据集(实际上包含275行)

District 9SurrogatesThe Invention Of LyingPandorumUPThe SoloistCloudy With A Chance Of MeatballsThe Imaginarium of Doctor ParnassusCirque du Freak: The Vampires AssistantZombieland9The Men Who Stare At GoatsA Christmas CarolParanormal Activity

如果我手动将每个字母和数字放在一列中,然后通过在该列中给它一个x来注册该字母是否出现在电影标题中,然后对它们进行计数以产生总计,我将在下面得到类似的内容。x的每个垂直列都是该影片名称中字母的列表,无论该字母出现多少次或大小写如何。

上面的简短结果为:

A  x x  xxxx xxx  9 B       x  x      2 C x     xxx   xx  6D x  x  xxxx      6E  xx  xxxxx x    8F   x   xxx       4 G  xx    x   x    4H   x  xxxx  xx   7I x x  xxxxx  xx  9J                 0K         x       0L   x  xx  x  xx  6M    x  xxxx xxx  8N   xx  xxxx x x  8O  xxx xxx x xxx  10P    xx  xx    x  5Q         x       1R xx x   xx  xxx  7S xx   xxxx  xx   8T xxx  xxxx  xxx  10U  x xx xxx       6V   x     x    x  3W       x    x    2X                 0 Y   x   x      x  3Z          x      1 0                 0  1                 0  2                 0 3                 04                 05                 06                 07                 08                 09 x         x     1

在上面的示例中,每列都是一个“电影名”,如您所见,第5列仅标记为“ u”和“ p”,而第11列仅标记为“ 9”。最后一栏是每个字母的计数。

我想以某种方式构建一个查询,使我得到结果行:A 9,B 2,C 6,D 6,E
8等,其中考虑了从我的电影列中提取的每一行条目。如果该字母未出现在任何行中,我希望为零。

我不知道这是否有可能,或者是否有可能在php中使用36个查询系统地做到这一点。

在当前数据集中,有275个条目,并且每月增长约8.33(每年100个)。我预测到2019年它将达到1000行,届时我无疑将使用完全不同的系统,因此我不必担心使用庞大的数据集进行拖曳。

当前最长的标题是“珀西·杰克逊与奥林匹亚:闪电小偷”,每页50个字符(是的,我知道那部可怜的电影;-),最短的是1个,“ 9”。

我正在运行Postgres的9.0.0版本。

抱歉,如果我以多种方式多次说过相同的话,那么我试图获取尽可能多的信息,以便您知道我要实现的目标。

如果您需要任何澄清或更大的数据集进行测试,请询问,我将根据需要进行编辑。

建议非常欢迎。

编辑1

Erwin 感谢您的修改/标记/建议。同意他们所有人。

修复了 Erwin 建议的丢失的“ 9”拼写错误。我手动进行了转录错误。

kgrittn ,谢谢您的建议,但是我无法从9.0.0版本进行更新。我已经问过我的提供者,他们是否会尝试更新。

回复

感谢您的出色答复 Erwin

抱歉延迟回复,但我一直在努力使您的查询生效,并学习新的关键字以了解您创建的查询。

我调整了查询​​以适应表结构,但结果集与预期的不一样(全零),因此我直接复制了行并得到了相同的结果。

虽然两种情况下的结果集都列出了所有36行,并带有适当的字母/数字,但是所有行的计数(ct)均显示为零。

我试图解构查询,以查看它可能跌倒了。

的结果

SELECT DISTINCT id, unnest(string_to_array(lower(film), NULL)) AS letterFROM  films

为“未找到行”。我不确定,也许应该从更广泛的查询中提取出来。

当我删除了unnest函数时,结果是14行全部为“ NULL”

如果我调整功能

COALESCE(y.ct, 0) to COALESCE(y.ct, 4)<br />

然后我的数据集对每个字母的响应全部为4,而不是前面解释的零。

简要阅读了COALESCE的“ 4”作为替代值后,我猜测y.ct为NULL并被该第二个值替代(这是为了覆盖序列中字母不匹配的行,即如果没有电影包含“
q”,那么“ q”列将为零而不是NULL?)

我尝试过的数据库是SQL_ASCII,我想知道这是否是一个问题,但是在运行带有UTF-8的8.4.0版本时,我有相同的结果。

道歉,如果我犯了一个明显的错误,但是我无法返回我需要的数据集。

有什么想法吗?

再次感谢您的详细答复和您的解释。

答案1

小编典典

该查询应完成以下任务:

测试用例:

CREATE TEMP TABLE films (id serial, film text);INSERT INTO films (film) VALUES (''District 9''),(''Surrogates''),(''The Invention Of Lying''),(''Pandorum''),(''UP''),(''The Soloist''),(''Cloudy With A Chance Of Meatballs''),(''The Imaginarium of Doctor Parnassus''),(''Cirque du Freak: The Vampires Assistant''),(''Zombieland''),(''9''),(''The Men Who Stare At Goats''),(''A Christmas Carol''),(''Paranormal Activity'');

询问:

SELECT l.letter, COALESCE(y.ct, 0) AS ctFROM  (    SELECT chr(generate_series(97, 122)) AS letter  -- a-z in UTF8!    UNION ALL    SELECT generate_series(0, 9)::text              -- 0-9    ) lLEFT JOIN (    SELECT letter, count(id) AS ct    FROM  (        SELECT DISTINCT  -- count film once per letter               id, unnest(string_to_array(lower(film), NULL)) AS letter        FROM   films        ) x    GROUP  BY 1    ) y  USING (letter)ORDER  BY 1;
  • 这需要PostgreSQL 9.1 !考虑发行说明:

更改string_to_array(),以便使用NULL分隔符将字符串拆分为字符(Pavel Stehule)

以前,此操作返回一个空值。

  • 您可以使用regexp_split_to_table(lower(film), '''')而不是unnest(string_to_array(lower(film), NULL))(在9.1之前的版本中可用!),但通常会慢一些,并且长字符串会降低性能。

  • generate_series()用来产生[a-z0-9]作为单独的行。并且将LEFT JOIN添加到查询中,因此每个字母都表示在结果中。

  • 用于DISTINCT对每部电影计数一次。

  • 永远不用担心1000行。这对于现代硬件上的现代PostgreSQL来说是花生。

bash – 根据包含数字和不包含数字的行对CSV中的行进行排序

bash – 根据包含数字和不包含数字的行对CSV中的行进行排序

我有一个4列的CSV文件.我想对行进行排序,这样,第三列中某处包含任意数字的行被推到文档的末尾,第三列中没有数字的行被放到开头.如何以这种方式对文件进行排序?

更新:

为了澄清,我需要移动包含任意数字的行(即[0-9]的匹配)在第三列的字母内的某处(该行的第三列可能包含其他符号).空间并不重要.例如.

dog,eats chicken,has 4 legs,does not like cats
cat,eats mice,has a tail,does not like water
mouse,eats bugs,does not like cats
elephant,eats peanuts,has a trunk,does not like mice

将分类到:

cat,does not like water
elephant,does not like mice
dog,does not like cats
mouse,does not like cats
这可能对你有用:
sed 'h;s/,/\n/2;s/.*\n/0/;s/,.*//;s/[^0-9]//g;G;s/\n/\t/' file | 
sort -k1,1n -k2 | 
cut -f2

说明:

>使用第3列中的数字生成数字键(如果没有将键设置为0)>按上述键排序,然后按原始文件排序>删除数字键

c – 确保字符串仅包含字母数字字符的更好方法?

c – 确保字符串仅包含字母数字字符的更好方法?

我正在寻找一种简单的方法来检查类型std :: string是否只包含字母数字字符.我的代码如下所示:

std::string sstr("This is a test");
   for (std::string::const_iterator s = sstr.begin(); s != sstr.end(); ++s)
              if (! isalnum(*s)) return false;

这是正确的做法吗?有没有更有效的方法来处理这个问题?

解决方法

我会用 std::find_if

std::string sstr("This is a test");

auto it = std::find_if(std::begin(sstr),std::end(sstr),[](unsigned char c) {
    return !std::isalnum(c);
});

return it == std::end(sstr);

std::find_if_not可能会更有意义:

auto it = std::find_if_not(std::begin(sstr),[](unsigned char c) {
    return std::isalnum(c);
});

c# – 检查密码包含字母数字和特殊字符

c# – 检查密码包含字母数字和特殊字符

如何检查字符串passwordText是否至少包含

> 1个字母字符
> 1个号码
> 1个特殊字符(符号)

解决方法

试试这个:

bool result =
   passwordText.Any(c => char.IsLetter(c)) &&
   passwordText.Any(c => char.IsDigit(c)) &&
   passwordText.Any(c => char.IsSymbol(c));

虽然您可能希望通过“字母字符”,“数字”和“符号”更具体地说明您的意思,因为这些术语对不同的人意味着不同的东西,并且您不确定这些术语的定义是否符合定义框架使用.

我猜你用字母表示“a-z”或“A-Z”,用数字表示“0-9”,用符号表示任何其他可打印的ASCII字符.如果是这样,试试这个:

static bool IsLetter(char c)
{
    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}

static bool IsDigit(char c)
{
    return c >= '0' && c <= '9';
}

static bool IsSymbol(char c)
{
    return c > 32 && c < 127 && !IsDigit(c) && !IsLetter(c);
}

static bool IsValidPassword(string password)
{
    return
       password.Any(c => IsLetter(c)) &&
       password.Any(c => IsDigit(c)) &&
       password.Any(c => IsSymbol(c));
}

如果实际上你的意思是其他东西,那么相应地调整上述方法.

Java String - 查看字符串是否仅包含数字而不包含字母

Java String - 查看字符串是否仅包含数字而不包含字母

我在整个应用程序中加载了一个字符串,它从数字变为字母等。我有一个简单的if语句来查看它是否包含字母或数字,但是有些东西不能正常工作。这是一个片段。

String text = "abc"; String number;if (text.contains("[a-zA-Z]+") == false && text.length() > 2) {    number = text; }

尽管text变量确实包含字母,但条件返回为true。和&&应该评估两个条件必须是true为了处理number = text;

===============================

解决方案:

我能够通过使用对此问题的评论提供的以下代码来解决此问题。所有其他帖子也有效!

我使用的有效来自第一条评论。尽管提供的所有示例代码似乎也是有效的!

String text = "abc"; String number;if (Pattern.matches("[a-zA-Z]+", text) == false && text.length() > 2) {    number = text; }

答案1

小编典典

如果您要将数字作为文本处理,请更改:

if (text.contains("[a-zA-Z]+") == false && text.length() > 2){

至:

if (text.matches("[0-9]+") && text.length() > 2) {

与其检查字符串 是否不 包含字母字符,不如检查以确保它 包含数字。

如果您确实想使用数值,请使用Integer.parseInt()Double.parseDouble()其他人在下面解释。


true附带说明一下,将布尔值与or进行比较通常被认为是不好的做法false。只需使用if (condition)or if(!condition)

关于计算包含字母/数字的行数excel计算含有字母数量的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于bash – 根据包含数字和不包含数字的行对CSV中的行进行排序、c – 确保字符串仅包含字母数字字符的更好方法?、c# – 检查密码包含字母数字和特殊字符、Java String - 查看字符串是否仅包含数字而不包含字母的相关知识,请在本站寻找。

本文标签: