В Perl, как я могу сказать, является ли строка числом?

Можно также вновь открыть суд и cerr потоки для вывода в файл также. Следующее должно работать на это:

#include <iostream>
#include <fstream>

int main ()
{
    std::ofstream file;
    file.open ("cout.txt");
    std::streambuf* sbuf = std::cout.rdbuf();
    std::cout.rdbuf(file.rdbuf());
    //cout is now pointing to a file
    return 0;
}
9
задан Chad DeShon 11 July 2009 в 04:50
поделиться

6 ответов

Спецификация JSON предоставляет довольно четкие правила для формата числа, поэтому следующее регулярное выражение должно работать:

/^-?(0|([1-9][0-9]*))(\.[0-9]+)?([eE][-+]?[0-9]+)?$/
19
ответ дан 4 December 2019 в 06:01
поделиться

Вы можете просто превратить его в число, а затем сравнить его с исходной строкой.

if( $value eq $value+0 ){
  print "$value is a number\n";
}

(Примечание: это будет работать только для простых чисел, таких как 123 или 12,3)

4
ответ дан 4 December 2019 в 06:01
поделиться

Попробуйте Scalar :: Util :: look_like_number :

Например:

use Scalar::Util qw(looks_like_number);

if (looks_like_number($thingy)) {
    print "looks like $thingy is a number...\n"
}
21
ответ дан 4 December 2019 в 06:01
поделиться

I think this question from perlfaq solves your problem.

Generally the problem is defining what exactly you want to read as number.

  • is "-1.312" valid number?
  • is "inf"?
  • 5.34123412E-03 ?
2
ответ дан 4 December 2019 в 06:01
поделиться

It might be easier for you to just read the XML into a data structure in Perl and let Perl's JSON library figure it out for you. It already has checking for that, so unless your number is actually a string in the XML (e.g. it's got a space after it, etc) JSON->encode() will encode it as a JSON number.

-1
ответ дан 4 December 2019 в 06:01
поделиться

Я думаю (исходя из недавнего опыта), что вы делаете ошибку, выполняя любое ручное преобразование XML-> JSON. Я столкнулся со многими ошибками в этом процессе, не в последнюю очередь из-за неправильно экранированных символов.

Я бы порекомендовал проанализировать ваш XML с помощью одного из многих модулей XML :: * (я использовал XML :: Simple), а затем отобразить его как JSON с использованием JSON :: XS. JSON :: XS позволяет преобразовывать структуру данных Perl в JSON; XML :: Simple анализирует XML в структуру данных Perl. А пока вы можете манипулировать структурой данных Perl по своему усмотрению.

Суть в том, что вы больше не заботитесь о заключении в кавычки / экранировании символов.

3
ответ дан 4 December 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: