TranslateAll

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Info! Wir verlosen 3 x das Nacken- und Schultermassagegerät Optimus New Generation Jade! - Spiel mit!

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Ich hatte mich ja schon einmal mit dem Mehrfach-Austausch von Strings beschäftigt.

      Inzwischen gibt es sooo viele Möglichkeiten...

      Hier einige Beispiele:

      s = TranslateAll( Quelle$, von$, nach$ )
      Das Original.


      s = TranslateAll( Quelle$, mehrere_von$, mehrere_nach$, trenner$ )
      Mit einem zusätzlichen Trenner einfach mehrere Such- und Ersatzstrings trennen.


      s = TranslateAll( Quelle$, von$[], nach$[] )
      Oder einfach in 2 dynamische Arrays setzen.


      s = TranslateAll( Quelle$, von_und_nach$[], trenner$ )
      Oder in ein dynamisches Array und das von und nach mit einem Trennzeichen versehen.


      s = TranslateAll( Quelle$, von_und_nach_HASH[] )
      Oder den Suchbegriff als Hash-Schlüssel und das zu Ersetzende als Hash-Wert.


      Wenn man ein dynamisches Array mehrmals verwendet, dann sollte man nicht vergessen: SetSize dasArray[],0
      Innerhalb der Funktion wird mittels SizeOf() die Größe ermittelt. Das kann sonst zu Überraschungen führen.

      Brainfuck-Quellcode

      1. 'auskommentieren für Release
      2. $DEFINE DEBUG
      3. Proc TranslateAll
      4. // TranslateAll( Quelle$, mehrere_von$, mehrere_nach$, trenner$ )
      5. // TranslateAll( Quelle$, von$, nach$ )
      6. // TranslateAll( Quelle$, von$[], nach$[] )
      7. // TranslateAll( Quelle$, von_und_nach$[], trenner$ )
      8. // TranslateAll( Quelle$, von_und_nach_HASH[] )
      9. Declare int PC,PCi, string PT : PC = %PCount : PT = "" : For PCi,1,PC : PT = PT + PType$(PCi) + "|" : EndFor
      10. Declare int i, j, k, string kk,vv
      11. $IFDEF DEBUG
      12. print " // ";PT
      13. $ENDIF
      14. '-----------
      15. If PC = 4
      16. '===========
      17. If (PT = "$|$|$|$|") // Translate$( Quelle$, mehrere_von$, mehrere_nach$, trenner$ )
      18. Parameters string A4a,B4a,C4a,D4a
      19. i = Len( B4a, D4a )
      20. j = Len( C4a, D4a )
      21. k = if(i < j,i,j)
      22. For i,1,k
      23. $IFDEF DEBUG
      24. print " // ";SubStr$( B4a, i, D4a ),"->",SubStr$( C4a, i, D4a )
      25. $ENDIF
      26. A4a = Translate$( A4a, SubStr$( B4a, i, D4a ), SubStr$( C4a, i, D4a ) )
      27. EndFor
      28. Return A4a
      29. EndIf
      30. '-----------
      31. ElseIf PC = 3
      32. '===========
      33. If (PT = "$|$|$|") // Translate$( Quelle$, von$, nach$ )
      34. Parameters string A3a,B3a,C3a
      35. $IFDEF DEBUG
      36. print " // ";B3a,"->",C3a
      37. $ENDIF
      38. Return Translate$( A3a, B3a, C3a )
      39. '===========
      40. ElseIf (PT = "$|$[]|$[]|") // Translate$( Quelle$, von$[], nach$[] )
      41. Parameters string A3b,B3b[],C3b[]
      42. i = SizeOf(B3b[])
      43. j = SizeOf(C3b[])
      44. k = if(i < j,i,j)
      45. For i,0,k - 1
      46. $IFDEF DEBUG
      47. print " // ";B3b[i],"->",C3b[i]
      48. $ENDIF
      49. A3b = Translate$( A3b, B3b[i], C3b[i] )
      50. EndFor
      51. Return A3b
      52. '===========
      53. ElseIf (PT = "$|$[]|$|") // Translate$( Quelle$, von_und_nach$[], trenner$ )
      54. Parameters string A3c,B3c[],C3c
      55. k = SizeOf(B3c[])
      56. For i,0,k - 1
      57. $IFDEF DEBUG
      58. print " // ";SubStr$( B3c[i], 1, C3c ),"->",SubStr$( B3c[i], 2, C3c)
      59. $ENDIF
      60. A3c = Translate$( A3c, SubStr$( B3c[i], 1, C3c ), SubStr$( B3c[i], 2, C3c) )
      61. EndFor
      62. Return A3c
      63. EndIf
      64. '-----------
      65. ElseIf PC = 2
      66. '===========
      67. If PT = "$|H[]|" // Translate$( Quelle$, von_und_nach_HASH[] )
      68. Parameters string A2a, hash B2a[]
      69. ForEach B2a[],kk,vv
      70. $IFDEF DEBUG
      71. print " // ";kk,"->",vv
      72. $ENDIF
      73. A2a = Translate$( A2a, kk, vv )
      74. EndFor
      75. Return A2a
      76. EndIf
      77. EndIf
      78. '-----------
      79. $IFDEF DEBUG
      80. print " // ERROR"
      81. $ENDIF
      82. Return ""
      83. EndProc
      84. Declare string s_ori, s, A[], B[], hash H[]
      85. Cls
      86. s_ori = "<td align=\qalign1\q valign=\qvalign1\q bgcolor=\qHexColor\q class=\qtdclass1\q><font color=\qFontColor\q>derText</font></td>"
      87. s = s_ori
      88. Print " // TranslateAll( Quelle$, mehrere_von$, mehrere_nach$, trenner$ )"
      89. s = TranslateAll( s, "FontColor|HexColor|derText|tdclass1|valign1|align1", "#FF0000|#FFFF00|Eintrag|Smaller|middle|center", "|" )
      90. Print " "
      91. Print s
      92. Print " "
      93. $IFDEF DEBUG
      94. waitinput
      95. $ENDIF
      96. s = s_ori
      97. Print " // TranslateAll( Quelle$, von$, nach$ ) --- nur ein Wert getauscht"
      98. s = TranslateAll( s, "FontColor", "#FF0000" )
      99. Print s
      100. Print " "
      101. $IFDEF DEBUG
      102. waitinput
      103. $ENDIF
      104. s = s_ori
      105. A[0] = "FontColor" : B[0] = "#FF0000"
      106. A[1] = "HexColor" : B[1] = "#FFFF00"
      107. A[2] = "derText" : B[2] = "Eintrag"
      108. A[3] = "tdclass1" : B[3] = "Smaller"
      109. A[4] = "valign1" : B[4] = "middle"
      110. A[5] = "align1" : B[5] = "center"
      111. A[6] = ""
      112. Print " // TranslateAll( Quelle$, von$[], nach$[] )"
      113. s = TranslateAll( s, A[], B[] )
      114. Print s
      115. Print " "
      116. $IFDEF DEBUG
      117. waitinput
      118. $ENDIF
      119. s = s_ori
      120. SetSize A[],0
      121. A[0] = "FontColor|#FF0000"
      122. A[1] = "HexColor|#FFFF00"
      123. A[2] = "derText|Eintrag"
      124. A[3] = "tdclass1|Smaller"
      125. A[4] = "valign1|middle"
      126. A[5] = "align1|center"
      127. Print " // TranslateAll( Quelle$, von_und_nach$[], trenner$ )"
      128. s = TranslateAll( s, A[], "|" )
      129. Print s
      130. Print " "
      131. $IFDEF DEBUG
      132. waitinput
      133. $ENDIF
      134. s = s_ori
      135. H["HexColor"] = "#FFFF00"
      136. H["FontColor"] = "#FF0000"
      137. H["derText"] = "Eintrag"
      138. H["tdclass1"] = "Smaller"
      139. H["valign1"] = "middle"
      140. H["align1"] = "center"
      141. Print " // TranslateAll( Quelle$, von_und_nach_HASH[] )"
      142. s = TranslateAll( s, H[] )
      143. Print s
      144. Print " "
      145. Print "ENDE"
      146. WaitInput
      147. End
      Alles anzeigen
      Programmieren, das spannendste Detektivspiel der Welt.