从<pre></pre>读取数字

时间:2014-10-07 02:08:52

标签: javascript pre

我正在尝试计算预标记中数字数组中的某些数字。比如计算有多少数字是7或更高。 例如,我有这个

    <pre class="data">2 7 3 1 2
    6   6   2   5   3
    8   2   5   9   9
    5   10  5   6   10
    2   10  3   </pre>

我已经弄清楚如何以一般方式获取数字:

    document.getElementsByTagName ('PRE')[0].firstChild.data = document.getElementsByTagName ('PRE')[0].firstChild.data.replace (/\t+$/, '')

但我不知道如何获得个人数字。它是一个阵列吗?或者我需要按空格解析的数字列表?

我看过这个帖子:Using <pre> tag to display data in columns?并尝试使用for循环抓取$ entry [i],但我无法读取个别数字。

请帮助。

4 个答案:

答案 0 :(得分:2)

以下将为您提供一个二维数组:

var str = document.getElementsByTagName('pre')[0].textContent;

str                                 // take the string and
    .split('\n')                    // break it into an array of lines;
    .map(function(line) {           // then transform each line by
        return line                 // taking the line,
            .trim()                 // removing leading and trailing spaces,
            .split(/\s+/)           // and breaking it into an array at whitespace,
            .map(Number);           // with each piece cast to a number.
     });

答案 1 :(得分:1)

http://jsfiddle.net/Lwkw4ee4/

String.prototype.trim = function() {  // just in case of an old browser
    return this.replace(/^\s+|\s+$/gm,'');
}

var str = document.getElementById('data').innerHTML.trim();
var data = str.split(/\s+/);
alert(data);

数据将是一维数字数组(准确 - 带数字的字符串,但无关紧要 - 很容易投射)。

答案 2 :(得分:0)

http://jsbin.com/mepulu/2/edit

var text = document.getElementsByClassName('data')[0].innerHTML; // Text
var values = text.split(/\s+/); // Array of strings
var numbers = values.map(function(num) {
  return parseInt(num, 10);
});
numbers; // Array of integers

答案 3 :(得分:-1)

预标签的内容只是文字。要访问这些数字,您必须解析文本。我假设你只需要数字列表,而且列没有意义。

如果是这样,您需要做的是在空格上拆分文本,然后处理每个项目:

var number_string = document.getElementsByTagName ('PRE')[0].firstChild.data;

var numbers = number_string.split(/[\s]+/);
var a_number;

for (var i = 0; i <= numbers.length; i++) {
    a_number = parseInt(numbers[i]);  // assuming the numbers are whole numbers.
}

请注意,数字[i]实际上是数字的字符串表示,因此您需要使用parseInt(numbers [i])来获取实数。 (或parseFloat(numbers [i]),如果它们不是整数)

希望这有帮助。