javascript - получить два числа из строки - PullRequest
7 голосов
/ 26 августа 2010

У меня есть строка вроде:

text-345-3535

Числа могут меняться.Как я могу получить два числа из этого и сохранить это в две переменные?

Ответы [ 5 ]

6 голосов
/ 26 августа 2010
var str = "text-345-3535"

var arr = str.split(/-/g).slice(1);

Попробуйте: http://jsfiddle.net/BZgUt/

Это даст вам массив с двумя последними наборами чисел.

Если вы хотите, чтобы они были в отдельных переменных, добавьте это.

var first = arr[0];
var second = arr[1];

Попробуйте: http://jsfiddle.net/BZgUt/1/


EDIT:

Просто для удовольствия, вот другой способ.

Попробуйте: http://jsfiddle.net/BZgUt/2/

var str = "text-345-3535",first,second;

str.replace(/(\d+)-(\d+)$/,function(str,p1,p2) {first = p1;second = p2});
3 голосов
/ 26 августа 2010
var m = "text-345-3535".match(/.*?-(\d+)-(\d+)/);

m [1] будет содержать «345», а m [2] будет иметь «3535»

2 голосов
/ 09 июня 2011

Еще один способ сделать это (с помощью String Tokenizer).

int idx=0; int tokenCount;
String words[]=new String [500];
String message="text-345-3535";
StringTokenizer st=new StringTokenizer(message,"-");
tokenCount=st.countTokens();
System.out.println("Number of tokens = " + tokenCount);
while (st.hasMoreTokens()) // is there stuff to get?
    {words[idx]=st.nextToken(); idx++;}
for (idx=0;idx<tokenCount; idx++)
    {System.out.println(words[idx]);}
}

выход

слов [0] => текст
слова [1] => 345
слова [2] => 3535

2 голосов
/ 01 июня 2011

Попробуй это, var text = "text-123-4567";

if(text.match(/-([0-9]+)-([0-9]+)/)) {
        var x = Text.match(/([0-9]+)-([0-9]+)/);
                alert(x[0]);
                alert(x[1]);
                alert(x[2]);    
    }

Спасибо.

2 голосов
/ 26 августа 2010

Если вы не привыкли к регулярным выражениям, ответ @patrick dw, вероятно, лучше для вас, но это также должно работать:

var strSource = "text-123-4567";
var rxNumbers = /\b(\d{3})-(\d{4})\b/
var arrMatches = rxNumbers.exec(strSource);
var strFirstCluster, strSecondCluster;
if (arrMatches) {
    strFirstCluster = arrMatches[1];
    strSecondCluster = arrMatches[2];
}

Это извлечет числа, если это ровно три цифры, за которыми следует тире и четыре цифры. Выражение может быть изменено многими способами, чтобы получить именно ту строку, которую вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...