Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: Strings mit gleichen Klammerwerten aus Text lesen

Strings mit gleichen Klammerwerten aus Text lesen 5 Jahre 5 Monate her #509

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
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:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Strings mit gleichen Klammerwerten aus Text lesen 5 Jahre 5 Monate her #510

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
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)


Anhang:
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Strings mit gleichen Klammerwerten aus Text lesen 5 Jahre 5 Monate her #511

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Strings mit gleichen Klammerwerten aus Text lesen 5 Jahre 5 Monate her #512

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
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.
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Strings mit gleichen Klammerwerten aus Text lesen 5 Jahre 5 Monate her #513

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.084 Sekunden