【问题标题】:Javascript extract unknown number in stringJavascript在字符串中提取未知数字
【发布时间】:2013-01-08 12:40:38
【问题描述】:

我有一个字符串 ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown 将使用我的 asp.net 按钮控件中的 sender 进入一个 javascript 函数...

<asp:Button ID="buttStartTimer" runat="server" CausesValidation="false" OnClientClick="javascript:countdown(this);" Text="Start" />

功能测试(发送者){

}

需要在ctrl后面直接获取数字,上例中为06(ctrl06_lblCountDown)

如何使用 javascript 提取此号码?

谢谢

【问题讨论】:

  • 它总是紧跟在字符串“ctrl”之后吗?
  • 您能否提供一些不同的字符串,以便我们了解每个字符串之间的差异?
  • 我尝试了以下两个答案,但都没有返回值。 ctrl 输出数字可以是任何数字,即 ctrl45 它们只是数字。
  • @SheriTrager,我在答案中添加了一个工作示例。也看看这个:jsfiddle.net/RXGb2/1

标签: javascript asp.net regex


【解决方案1】:
var str = "ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown",
    result = str.match(/.*ctrl(\d+).*/)[1];

工作示例:http://jsfiddle.net/RXGb2/

【讨论】:

  • 我看到了您的示例,它在 jsfiddle 中效果很好,但在我的应用程序中却不行。我正在使用 asp.net 4,这有什么关系。我切换到 IE 并得到错误... SCRIPT438:对象不支持属性或方法“匹配”
  • 你确定match是用字符串调用的吗?
  • 我确实检查了发件人是什么,它是“ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl2_buttStartTime”我使用 onclientclick="javascript:countdown(this);" 在我的 asp.net 按钮控件中引用发件人我知道我一定做错了什么,这会影响我得到的答案。有什么想法吗?
  • 好的,我刚刚做了一个警报,看看发件人是什么,它是控件。我会尝试使用 sender.id
  • 已将 id 添加到发件人,现在它是一个字符串......我想我一直在努力解决这个问题......所以对不起:-(。我现在得到了这个号码,它就像一个冠军!非常感谢您的帮助,让我思考。
【解决方案2】:

您可以轻松提取正在使用的正则表达式:

var str = "ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown";
var num = parseInt(str.match(/_ctrl([\d]*)_/)[1], 10);

更安全的方式:

var str = "ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown";
var parts = str.match(/_ctrl([\d]*)_/), num;
if(parts.length > 1) {
    num = parseInt(parts[1], 10);
}

【讨论】:

  • 我认为 OP 希望的结果是 06 而不是 6
  • 那就不要parseInt(),其他的都一样。
  • 我会在没有 parseint 的情况下尝试它,我还检查了以确保发件人发送了正确的信息,并且确实如此。这是我从发件人那里得到的……“ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl2_buttStartTimer”
  • 我切换到 IE 并得到错误... SCRIPT438: 对象不支持属性或方法“匹配”
【解决方案3】:

你可以试试这样的:

var str = 'ctrl06_lblCountDown',
    numericArray = [],
    numericString,
    num,
    i=0,
    len = 0;


numericArray = str.match(/[0-9]/g);

len = numericArray.length;

numericString = '';
for(i=0; i<len; i++){
    numericString += numericArray[i];

}

num = parseInt(numericString,10);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-28
    • 2013-07-25
    • 1970-01-01
    • 2017-07-20
    • 2012-01-12
    • 1970-01-01
    • 2014-07-26
    相关资源
    最近更新 更多