【问题标题】:how to retrieve substring from POST data response? JS如何从 POST 数据响应中检索子字符串? JS
【发布时间】:2021-09-29 01:49:21
【问题描述】:

我有一个 POST 请求,根据发送的表单,它以不同的百分比包装在 <p> 标记中。示例:

htmlcode = "<p>20%</p >"

每次发送 POST 请求时,我如何获取子字符串和百分比?

【问题讨论】:

  • 如果&lt;p&gt;&lt;/p&gt; 总是包含百分比,您可以将它们替换为空。它只会留给你——比如说——“20%”。此时,您只需将“%”符号替换为空,即可获得数字。
  • 即使没有正则表达式也很简单。 let x = htmlcode.replace('&lt;p&gt;', '').replace('&lt;/p&gt;', '').replace('%'. '');
  • 但由于您不需要 html 标记,我想说这个问题与这个问题重复:stackoverflow.com/questions/6649327/…var number = htmlcode.replace(/\D+/g, '');

标签: javascript string post substring


【解决方案1】:

首先,如果你不需要,为什么你的数据会被包裹在&lt;p&gt;...&lt;/p&gt;标签中?

但要回答你的问题:

const htmlcode = "<p>20%</p>";

// Simply substringing
console.log('substring', htmlcode.substring(3, htmlcode.length - 4));

// Using RegExp
const match = htmlcode.match(/^<p>(.*)<\/p>$/);
console.log('match', match[1]);

RegExp 允许您稍后过滤掉一些其他内容,而 substring 版本是非常静态的。


我注意到您问题中的示例从 &lt;p&gt;20%&lt;/p&gt; 更改为 &lt;p&gt;20%&lt;/p &gt;。现在我的第一种方法不起作用,但在修改 RegExp 以考虑可选空格时,第二种方法会起作用:

const htmlcode = "<p>20%</p >";

// Using RegExp
const match = htmlcode.match(/^<p>(.*)<\/p\s*>$/);
console.log('match', match[1]);

【讨论】:

  • 感谢您的快速回复,运行的代码正在控制台中输出此内容Cannot read property 1 of null
  • 如果你运行代码sn -p,你可以看到它可以工作。如果 match 为 null(因此导致该错误),则表示 RegExp 不匹配。因此,您的 htmlcode 看起来不像 &lt;p&gt;...&lt;/p&gt;,因此请检查您的 HTML 请求返​​回的内容。
  • 第一个解决方案假定百分比表示为 2 位数字。如果5%100% 怎么办?
  • @GrafiCode 第一个解决方案跳过前 3 个字符和后 4 个字符。它不关心标签之间有多少字符。
  • var number = htmlcode.replace(/\D+/g, ''); 这将只保留数字(即它也会删除“%”符号)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多