Aus Text Datei nur Zahlen übernehmen

pentilisea

Mitglied
Hallo im Forum,
ich lade eine Text Datei in eine TextArea. Die Datei hat ca. 300 Zeilen, von denen die meisten aus Zahlen bestehen.
Ich möchte jetzt nur die Zahlen in die TextArea bringen und alle ASCII Zeichen nicht übernehmen.
Vielleicht mit is.integer() oder ähnlichen, aber mein Jave ist praktisch nicht vorhanden.

Das Java Script zum Darstellen der hochgeladenen Datei sieht so aus:

Java:
let input = document.querySelector('input')

let textarea = document.querySelector('textarea')

// This event listener has been implemented to identify a
// Change in the input section of the html code
// It will be triggered when a file is chosen.
input.addEventListener('change', () => {
    let files = input.files;

    if (files.length == 0) return;

    /* If any further modifications have to be made on the
    Extracted text. The text can be accessed using the
    file variable. But since this is const, it is a read
    only variable, hence immutable. To make any changes,
    changing const to var, here and In the reader.onload
    function would be advisible */

    

    const file = files[0];

    let reader = new FileReader();

    reader.onload = (e) => {
        const file = e.target.result;

        // This is a regular expression to identify carriage
        // Returns and line breaks
        const lines = file.split(/\r\n|\n/);
        textarea.value = lines.join('\n');

    };

    reader.onerror = (e) => alert(e.target.error.name);

    reader.readAsText(file);
});

Für Eure Vorschläge bin ich sehr dankbar.
Grüsse aus Duisburg, Klaus
 
JavaScript ist nicht Java.

Hier gibt's zwar irgendwo auch eine Ecke für JavaScript, aber da schreiben auch nur die, die Ahnung von JS haben, das ist nur ein Bruchteil der Foristen hier.
 
Wie sieht so eine Zeile der Textdatei aus? Besteht diese aus mehreren Zeichen? Besteht eine Zeile aus beidem, also Zahlen und Buchstaben? Sind die Zahlen immer ganze Zahlen?
 
Alle Ziffern einer Zeile in numbers zusammenfassen:
Javascript:
let line = "Sampll323435 Stringrfd23232ftesd3454!";
let numbers = line.match('/\d+/');

Alle Nicht-Ziffern aus line entfernen und das Ergebnis in result zusammenfassen:
Javascript:
let result = line.replace(/[^0-9]/g,"");
 
Wie sieht so eine Zeile der Textdatei aus? Besteht diese aus mehreren Zeichen? Besteht eine Zeile aus beidem, also Zahlen und Buchstaben? Sind die Zahlen immer ganze Zahlen?
Hi Oneixee5, danke für die schnelle Antwort und Deine Zeit. Hier ein Ausschnitt:

Datum: 11.03.2022
Version: 1.01
********** **********
S Z R
34
22
22
1
12
9
35
12
-- -- --
28
25

Ich möchte alle ASCII, alle *** und --- auslassen, dann sollte es so aussehen:

34
22
22
1
12
9
35 ...etc.

Anschiessend möchte ich die Zahlenrheie in einen Array laden und von dort weiterverarbeiten ...
 
Hi Oneixee5 again. Ich habe deine Zeilen vor reader.onload .... eingefügt. Kein Ergebnis.
Vielleicht kann man jede Zeile in einen Array einfügen und diesen wieder selektiv auslesen ....
 
Ich würde dem Code einfach eine Hilfsfunktion spendieren
Javascript:
function isNumeric(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}
und
Javascript:
const lines = file.split(/\r\n|\n/);
durch
Javascript:
const lines = file.split(/\r\n|\n/).filter(isNumeric);
ersetzen.

EDIT: wobei Du in diesem Fall auch auf die Hilfsfunktion verzichten könntest:
Javascript:
const lines = file.split(/\r\n|\n/).filter(l => l.match(/^\d+$/));
müsste auch reichen.

EDIT2: weil ich gerade lese
Anschiessend möchte ich die Zahlenrheie in einen Array laden und von dort weiterverarbeiten ...
lines ist bereits ein Array - allerdings handelt es sich noch um Zeichenketten. Wenn Du ein Array brauchst, das aus Zahlen besteht:
Javascript:
const numbers = lines.map(parseFloat);
 
Zuletzt bearbeitet:
Hallo Mihe7, danke, das war perfekt, ich muss mich nur noch mit "split(/\r\n|\n/).filter(isNumeric)" zur Textformatierung beschäftigen.
Der code lautet jetzt:

Javascript:
    const file = files[0];



    let reader = new FileReader();



function isNumeric(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}



    reader.onload = (e) => {
        const file = e.target.result;

        // This is a regular expression to identify carriage
        // Returns and line breaks
   // const lines = file.split(/\r\n|\n/).filter(l => l.match(/^\d+$/));
        //const lines = file.split(/\r\n|\n/);
    const lines = file.split(/\r\n|\n/).filter(isNumeric);
        textarea.value = lines.join('\n');

    };

    reader.onerror = (e) => alert(e.target.error.name);

    reader.readAsText(file);
});

Das Ergebnis: siehe Anhang.

Screenshot AFTER 2023-07-24 12-01-45.png


Es fehlt jetzt nur noch die "spaces" rauszunehmen, aber ich denke, das kriege ich noch alleine hin ....

Vielen Dank erstmal für die gute Aufnahme im Forum und das mein Mangel an sequenziellen logischem Denken nicht mit Häme bedacht wird ...
 
Es fehlt jetzt nur noch die "spaces" rauszunehmen, aber ich denke, das kriege ich noch alleine hin ....
Javascript:
textarea.value = lines.map(l => l.trim()).join('\n');

oder besser vielleicht gleich

Javascript:
    const lines = file.split(/\r\n|\n/).map(l => l.trim()).filter(isNumeric);
 
JavaScript ist nicht Java.

Hier gibt's zwar irgendwo auch eine Ecke für JavaScript, aber da schreiben auch nur die, die Ahnung von JS haben, das ist nur ein Bruchteil der Foristen hier.

Merci, wieder was dazugelernt:

Java ist eine OOP-Programmiersprache, während JavaScript eine OOP-Skriptingsprache ist. Java erstellt Anwendungen, die auf einem virtuellen Rechner oder Browser ausgeführt werden, während JavaScript-Code nur auf einem Browser ausgeführt wird.
 
Java ist eine OOP-Programmiersprache, während JavaScript eine OOP-Skriptingsprache ist. Java erstellt Anwendungen, die auf einem virtuellen Rechner oder Browser ausgeführt werden, während JavaScript-Code nur auf einem Browser ausgeführt wird.
Das ist so auch nicht wirklich 10% korrekt. JavaScript ist nicht auf Browser beschränkt. Alles, was es braucht, ist eine Engine, die es lädt und ausführt. Und da gibt es viele Lösungen unabhängig von Browsern. NodeJs wäre da als ein prominentes Beispiel zu nennen.

Aber das sind wohl in erster Linie Feinheiten….
 

Neue Themen


Zurück
Oben