【问题标题】:Using JavaScript's parseInt at end of string在字符串末尾使用 JavaScript 的 parseInt
【发布时间】:2011-01-11 15:48:19
【问题描述】:

我知道

parseInt(myString, 10) // "Never forget the radix"  

如果字符串中的第一个字符是数字,将返回一个数字,但是如果我有一个像“column5”这样的字符串并且想要将它增加到下一个(“column6”),我该如何在JavaScript中做到这一点?

字符串末尾的位数是可变的。

【问题讨论】:

  • 如果你不想要非常奇怪的错误,请不要在没有第二个参数的情况下使用 parseInt,这里是 10 :-)

标签: javascript parseint


【解决方案1】:

从文本中拆分数字,解析它,递增它,然后重新连接它。如果前面的字符串是众所周知的,例如“column”,你可以这样做:

var precedingString = myString.substr(0, 6); // 6 is length of "column"
var numericString = myString.substr(7);
var number = parseInt(numericString);
number++;

return precedingString + number;

【讨论】:

    【解决方案2】:
    parseInt("column5".slice(-1), 10);
    

    您可以分别使用 -1 或 -2 表示一到两位数字。

    如果要指定任意长度,可以使用以下方法返回数字:

    parseInt("column6445".match(/(\d+)$/)[0], 10);
    

    以上内容适用于任何长度的数字,只要字符串以一个或多个数字结尾

    【讨论】:

    • 你为 3 个字符做什么?或 4 或 5 或 12 ?
    • 我喜欢这个,但我认为 .slice(6,string.length) 会给你最后 X-many 数字(la benhowdle89 的评论)
    • 你不知道结束数字有多少个“列”(又名数字)
    • 也可以。所有字符串看起来都像 columnXXX,其中 XXX 是可变位数。您知道“column”有 6 个字符长,并且您知道字符串 columnXXX 的总长度...,减去它们,您得到 numDigits。相当于切掉(已知的)左半部分,而不是试图猜测右半部分的大小。
    • @Toader Mihai Claudiu OP 没有指定原始问题中的数字长度是任意的,但我已经更新了我的答案以包含这种情况。
    【解决方案3】:

    试试这个:

    var match = myString.match(/^([a-zA-Z]+)([0-9]+)$/);
    if ( match ) {
      return match[1] + (parseInt(match[2]) + 1, 10);
    }
    

    这会将text10text11TxT1Txt2 等字符串转换为末尾的长数字。

    将基数添加到 parseInt 调用,因为默认的 parseInt 值太 magic 不可信。

    详情请看这里:

    http://www.w3schools.com/jsref/jsref_parseInt.asp

    基本上它会将text010 之类的东西转换为text9 这不好;)。

    【讨论】:

      【解决方案4】:
      var my_car="Ferrari";
      var the_length=my_car.length;
      var last_char=my_car.charAt(the_length-1);
      alert('The last character is '+last_char+'.');
      

      感谢http://www.pageresource.com/jscript/jstring1.htm

      然后只增加 last_char

      【讨论】:

      • 感谢您的快速回复!但是,如果数字是可变位数怎么办?我希望有数百列;x
      • 我不确定如果数字为 2 位或更多,这是否可行。
      • 没关系,因此.length,这将计算字符串中的字符数
      【解决方案5】:
      1. 使用 RegEx 拆分单词和数字。

      2. 使用 parseInt() 增加数字。

      3. 附加到单词。

      【讨论】:

        【解决方案6】:

        试着逐个字符地读取字符串,检查它的 ASCII 码。如果它从 48 到 57 你得到你的号码。尝试使用 charCodeAt 函数。然后只是拆分字符串,增加数字并完成。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多