【问题标题】:Matlab: Count the number of dots in URLMatlab:计算URL中的点数
【发布时间】:2014-03-01 07:05:12
【问题描述】:

这是我计算 URL 中点数的算法: 1)在matlab编辑器中输入完整的URL 2)去掉后面的路径,然后留下URL的域部分 3) 检查 URL 域部分中的 '.'/dots 的数量 4) 如果 URL 域部分的 '.'/dots 等于或大于 3 则返回 1,否则如果介于 1 和 3 之间则返回 0,否则返回 -1

str = {'http://www.math-works.com/help/images/removing-noise-from-images.html';
      'https://www.math.works.com/help/matlab/ref/strcmpi@dfvfv.html';
      'google.com/voice';
      'http://m.o.n.k.e.y.org/';
      'stack.overflow.com/';
      'meta.stackoverflow.com'};

out = regexp(str,'.*?[^/](?=(/([^/]|$)|$))','match','once')

A = {'.'};

cellfun('.'(n) ~isempty(n), strfind(out, A{1}))>1

我已经解决了 1)在 matlab 编辑器中输入完整的 URL 2)消除后面的路径,然后留下 URL 的域部分 3)检查 '.'/点在 URL 的域部分中的数量,但是现在在 4 中遇到问题)如果 URL 的域部分中的 '.'/dots 等于或大于 3,则返回 1,否则如果介于 1 和 3 之间,则返回 0,否则返回 -1

【问题讨论】:

  • 那么问题是什么?
  • 我收到错误,“??? 错误:文件:f5.m 行:16 列:14 不平衡或意外的括号或括号。”我在计算 '.'/dots 和 if-else 语句的数量时遇到问题
  • 试试这个,cellfun(@(n) (~isempty(n)), strfind(out, A{1}))>1
  • 如何检查那里的 if else 语句,“如果 URL 的域部分中的 '.'/dots 等于或大于 3,则返回 1,否则如果介于 1 和 3 之间,则返回 0,否则返回-1"

标签: regex matlab


【解决方案1】:

您只需使用正确的cellfun 命令即可获得答案。

str = {'http://www.math-works.com/help/images/removing-noise-from-images.html';
  'https://www.math.works.com/help/matlab/ref/strcmpi@dfvfv.html';
  'google.com/voice';
  'http://m.o.n.k.e.y.org/';
  'stack.overflow.com/';
  'meta.stackoverflow.com'};

out = regexp(str,'.*?[^/](?=(/([^/]|$)|$))','match','once')
A=cellfun(@(x) length(strfind(x,'.')), out);
B=-1*ones(length(A),1);
B(A>=3)=1;
B(A==2)=0;  %I am assuming between 1 to 3 is equal to 2.

你实际上可以编写一个函数来从A创建B,然后将该函数包含在cellfun中以直接获取B

【讨论】:

  • 为什么我不能得到条件的'1'、'0'、'-1'的输出。
  • B(A>=3)=1; B(A==2)=0; B(A
  • 你应该得到。从上面的代码,我得到B=[0 1 -1 1 0 0]
  • 哦,是的,它在变量编辑器中显示,如果我想在命令窗口中显示结果如何?我的命令窗口只显示:out = 'math-works.com' 'math.works.com' 'google.com' 'm.o.n.k.e.y.org' 'stack.overflow.com' 'meta.stackoverflow.com'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2016-02-04
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多