TranslateAll

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

    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.