Skip to main content
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Download

Strings mit gleichen Klammerwerten aus Text lesen

Mehr
12 Jahre 9 Monate her #509 von fertac
Hallo Herr Stark,
wir benötigen nochmal ihre Hilfe.

Wir lesen von der Readseite einen langen Text ein und möchten diesen über den ScriptHeater bearbeiten.

Beispiel:
...<ul><li>Werkzeug</li></ul>... ...<ul><li>Lampen/li></ul>... ...<ul><li>Kabel</li></ul>...u.s.w.

Die Texte sind unterschiedlich lang und haben beliebig viele <ul><li>Werkzeug</li></ul>.

Aufgabe: Wenn ein Wert zwischen <ul><li> und </li></ul> steht soll der Wert z.B. Werkzeug erfasst werden und mit einem anderen Klammerwert in einen ganz neuen Text geschrieben werden (nicht ersetzen).

z.B so: <p class=MsoNormal>Werkzeug</p>

Die neuen Klammerwerte sind hier:
1. <p class=MsoNormal>
2. </p>


Der String <p class=MsoNormal>Werkzeug</p> soll dann auf die Readseite in die 1. Zeile des neuen Textes u.s.w.

Neuer Text auf der Readseite:
<p class=MsoNormal>Werkzeug</p>
<p class=MsoNormal>Lampen</p>
<p class=MsoNormal>Kabel</p>

Die Schwierigkeit ist hier das die Klammerwerte immer wieder gleich sind und das sie Zeile für Zeile in einem Text eingetragen werden sollen.

Erst wenn der ganze Text durchgearbeitet worden ist soll der nächte Datensatz mit einem neuen Text eingelesen werden.

Danke
fertac :unsure:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
12 Jahre 9 Monate her #510 von FlowHeater-Team
Das sollte eigentlich mit dem String Replace Heater funktionieren. Tragen Sie hier in der CSV Ersetzungsliste folgende Werte ein:

<ul><li>;<p class=MsoNormal>
</li></ul>;</p>

Die Option "Listverarbeitung mit ersten Treffer abbrechen" müssen Sie noch deaktivieren.

Ein ähnliches Beispiel finden Sie hier: Zeilen zu Spalten (Kreuztabellenabfrage)



gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
12 Jahre 9 Monate her #511 von fertac
Hallo Herr Stark,

mit dieser Funktion String Replace Heater kann man Werte im Text austauschen. Ja das ist ein Teil der Aufgabe.

Aber in jedem eingelesenen Text stehen ca. 16.000 Zeichen.
ca. 150 mal ...<ul><li>Werkzeug</li></ul>... (natürlich nicht immer der Wert Werkzeug).

Im ausgegebenen Text der Readseite sollen nur die ausgeschnittenen Werte in der eingelesenen Reihenfolge stehen:

<p class=MsoNormal>Werkzeug</p>
<p class=MsoNormal>Lampen</p>
<p class=MsoNormal>Kabel</p>
...
Ein Lösung mit VB Script :) wäre toll.

Danke
fertac

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
12 Jahre 9 Monate her #512 von FlowHeater-Team
Hier ein C# Skript das die Daten extrahiert. Im Skript sind Kommentare wo Sie evtl. Anpassungen vornehmen können.

Falls Sie jeden Wert in eine Separate Zeile exportieren möchten müssen Sie zwei Zeilen im Skript leicht modifizieren, siehe Kommentar im Skript.

Achtung: In diesem Fall macht es nur Sinn wenn Ihre (CSV) Exportdatei nur eine Spalte enthält, ansonsten ist der Output verschoben! Falls Sie weitere Werte/Spalten exportieren möchten kann das theoretisch über den GroupOut Heater sowie weitere Skripts durchgeführt werden. Die Durchführung ist aber sehr Zeitaufwendig und kann nicht mehr im Rahmen des Supports durchgeführt werden.
Code:
public object DoWork() { if (InValues.Length == 0) throw new ArgumentException("min. 1 Eingangsparameter erwartet!"); string sIN = (string)InValues[0].GetString(); if (sIN == null) return null; string sRet = String.Empty; // Hier die Suchen und Ersetzen Werte anpassen string sFind1 = "<ul><li>"; string sFind2 = "</li></ul>"; string sReplace1 = "<p class=MsoNormal>"; string sReplace2 = "</p>"; int pos = 0; while( true ) { int p1 = sIN.IndexOf(sFind1, pos, StringComparison.CurrentCultureIgnoreCase); if (p1 < 0) break; int p2 = sIN.IndexOf(sFind2, p1, StringComparison.CurrentCultureIgnoreCase); if (p2 < 0) break; // Falls Sie jeden Wert in einer neue Zeile stehen haben möchten // müssen Sie an den nächten beiden Zeilen die Zeichen // entfernen! //if (sRet.Length != 0) // sRet += System.Environment.NewLine; sRet += sReplace1 + sIN.Substring(p1 + sFind1.Length, p2 - p1 - sFind1.Length) + sReplace2; pos = p2; } return sRet; }

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
12 Jahre 9 Monate her #513 von fertac
Hallo Herr Stark,

Perfekt!!

Genau das haben wir gesucht. Das Script wurde noch um 4 weitere Suchfunktionen erweitert und funktioniert so wie wir es benötigen.

Danke für die gute und schnelle Hilfe. :laugh: :)
fertac

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.277 Sekunden

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.