Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Text in String an Position X einfügen/entfernen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Text in String an Position X einfügen/entfernen (1023 / mal gelesen)
moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 26. Jan. 2021 08:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

hab folgende Aufgabe:

Variante1

Code:
123879_Z02578_ZSB Bauteile

Variante2
Code:
123879_K02578_ZSB Bauteile

Aus diesem Strings möchte ich das erste "Z" bzw."K" entfernen.
Zusätzlich beim "_ZSB" ein "-_" hinzufügen.

String sollte dann so aussehen

Code:
123879_02578_-_ZSB Bauteile

Die Zeichenlänge der Zahlenfolge ist immer gleich.Der hintere Teil variiert.

Habe mich mit der Left, Right und Mid Funktion befasst komme da aber nicht richtig klar mit.

Hat jemand ein paar Codeschnipsel für mich?

Besten Dank

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!      

[Diese Nachricht wurde von moppesle am 26. Jan. 2021 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Trilemma
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von Trilemma an!   Senden Sie eine Private Message an Trilemma  Schreiben Sie einen Gästebucheintrag für Trilemma

Beiträge: 254
Registriert: 20.08.2010

Catia V5 R19 SP8
Windows7 64bit 12GB 2,93GHz
Dell Precision T3500

erstellt am: 26. Jan. 2021 08:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für moppesle 10 Unities + Antwort hilfreich

Moin Uwe,

vielleicht hilft das hier:

Code:
Dim txt As String = "0000000000000"
        Dim cc() As Char = txt.ToArray
        cc(4) = "1" 'c
        Dim txt2 As String = cc
        MessageBox.Show(txt2)

die fünfte 0 wird mit 1 überschrieben.

Gruß
Peter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 26. Jan. 2021 10:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Peter,

Bekomme Fehler bei der Zuweisung in den Array. "Invalid Identifier" bei

Code:
cc = txt.ToArray

Ich programmiere in VBA und das Makro soll später in CatScript laufen.

Variablen werden richtig an die Funktion übergeben
strWert = 123879_Z02578_ZSB Bauteile
Char    =Z
Pos    =7

Code:
Function ReplaceCharakter(strWert, Char, Pos)  'Zeichen an einer bestimmten Position ersetzen
Dim txt As String
Dim cc() 'As Char
Dim txt2 As String

txt = strWert

        txt = strWert
        cc = txt.ToArray
        cc(Pos) = Char 'c
        txt2 = cc
        MessageBox.Show (txt2)
       
        'Dim txt As String = "0000000000000"
        'Dim cc() As Char = txt.ToArray
        'cc(4) = "1" 'c
        'Dim txt2 As String = cc
        'MessageBox.Show (txt2)
       
       
End Function


Hast du ein Tip für mich.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Trilemma
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von Trilemma an!   Senden Sie eine Private Message an Trilemma  Schreiben Sie einen Gästebucheintrag für Trilemma

Beiträge: 254
Registriert: 20.08.2010

Catia V5 R19 SP8
Windows7 64bit 12GB 2,93GHz
Dell Precision T3500

erstellt am: 26. Jan. 2021 11:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für moppesle 10 Unities + Antwort hilfreich

Hallo Uwe,

ich schreibe meine Makros hauptsächlich mit vb.net und dort läuft es.

ein anderer Ansatz wäre replace:

Code:

Sub CATMain()

Dim alt As String
Dim neu As String
  alt = "123879_K02578_ZSB Bauteile"
  neu = Replace(alt, "_ZSB", "_-_ZSB")
MsgBox neu

End Sub

Gruß
Peter


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lionel Hutz
Mitglied



Sehen Sie sich das Profil von Lionel Hutz an!   Senden Sie eine Private Message an Lionel Hutz  Schreiben Sie einen Gästebucheintrag für Lionel Hutz

Beiträge: 363
Registriert: 26.03.2014

CATIA V5 R20

erstellt am: 26. Jan. 2021 11:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für moppesle 10 Unities + Antwort hilfreich

Weniger flexibel, aber funktioniert:
Code:
'CATScript
Option Explicit

Sub CATMain()
Dim strWert As STring
Dim NewStrWert As STring
strWert = "123879_Z02578_ZSB Bauteile"
NewStrWert = left(strWert,7) & mid(strWert,9,6) & "-_" & mid( strWert,15,100)
InputBox strWert & Chr(10) & "123879_02578_-_ZSB Bauteile" & Chr(10) & NewStrWert,,NewStrWert
End Sub



Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 26. Jan. 2021 11:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Peter,

Zitat:
ich schreibe meine Makros hauptsächlich mit vb.net und dort läuft es.

OK das erklärt einiges.

Mit Replace kann ich in meinem Fall leider nicht arbeiten, da die erste Zeichenfolge "_Z" für das erste "Z" dann auch im "_ZSB" gefunden würde.

Habe es jetzt mit der Left,Right Funktion gelöst. Für die Suche nach dem ersten "Z"

Zitat:
Function ReplaceCharakter(strWert, Char,)  'Zeichen an einer bestimmten Position ersetzen
Dim sText As String
Dim CountChar
'Dim txt2 As String

sText = strWert
CountChar = Len(strWert)

sText = Left(sText,7) & "" & Right(sText, (CountChar - 8))
MsgBox strWert
       
       
End Function


Für Kritik und Anregungen oder Alternativen bin ich offen.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 26. Jan. 2021 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Lionel,

Danke auch dir für das Beispiel.
Das geht dann acuh in meine Lösungsrichtung.


Danke Euch beiden.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 26. Jan. 2021 17:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für moppesle 10 Unities + Antwort hilfreich

Servus Uwe

Nur als Ergänzung (löst dein Beispiel nicht komplett): Bei Replace kann man auch angeben wie oft der Suchstring ersetzt werden soll.

Code:
Sub CATMain()

Dim sNeu as String
Dim sAlt as String

sAlt = "123879_Z02578_ZSB Bauteile"

sNeu = Replace(sAlt, "Z", "",1,1)

sNeu = Replace(sNeu, "_ZSB", "_-_ZSB")

MsgBox sNeu

End Sub


Alternativ würde noch gehen: Sting mit Split in Array aufsplitten, Teilstings modifizieren, mit Join wieder den gesamt Sting zusammensetzen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 27. Jan. 2021 10:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


27-01-202110-36-23.jpg

 
Hallo Bernd,

Danke für deinen Code.

Ich habe noch einen andere Frage.

Ich möchte einen Stringvariable auf Inhalt abfragen.
Das funktioniert mit:

Code:
If strPBenennung.Value = "" Then

Ist nun ein oder mehr Leerzeichen vorhanden funzt das natürlich nicht mehr.

Mein Veruch mit

Code:
If strPBenennung.Value Is Nothing Then

läuft in einen Fehler."Object required"

Hab ich da etwas übersehen?

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Jan. 2021 10:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für moppesle 10 Unities + Antwort hilfreich

Servus

Du könntest mit Trim die Leerzeichen entfernen:

Code:
Sub CATMain()
  Dim MyString as String
 
  MyString = "  "
 
  if Trim(MyString) = "" then
    MsgBox "String enthält nur Leerzeichen oder ist leer"
  end if

End Sub


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 27. Jan. 2021 11:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Bernd,

Warum funktioniert Is Nothing in diesem Fall nicht.

Mit Trim kann ich den String nicht von den Leerzeilen befreien, da manchmal eine Konstruktionstabelle damit vernüpft ist.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Jan. 2021 11:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für moppesle 10 Unities + Antwort hilfreich

Servus

Was hast du denn vor?
Du könntest Trim zB nur zum Auswerten nutzen, aber den Inhalt des (Orginal)Stings nicht verändern.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 27. Jan. 2021 11:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich muss den Wert eines Parameter auf Inhalt Prüfen um diesen bei bei vorhandensein weiterverarbeiten.
Wenn nun 1 oder mehr Leerzeichen vorhanden sind soll nichts gemacht werden.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Jan. 2021 11:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für moppesle 10 Unities + Antwort hilfreich

zB könntest du mit InStr nach Leerzeichen suchen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz