How can i replace *~r with just a newline

Homepage Clovertech Forums Read Only Archives Cloverleaf Cloverleaf How can i replace *~r with just a newline

  • Creator
  • #49980
    Rick Pritchett

    here is my code so far.

               keylget args MSGID mh

               set msg [msgget $mh]

               regsub -all {~r} $msg {n} msg

               msgset $mh $msg

               lappend dispList “CONTINUE $mh”

Viewing 7 reply threads
  • Author
    • #64376
      Tom Rioux

      I’m assuming the “*” is simply a wildcard and that all you are wanting to replace is the “~r”.  If that is the case, try this:

      regsub -all ~\r $a \n b

      Not sure if this is exactly what you want.

      hcitcl>set a ~r

      hcitcl>regsub -all ~\r $a \n b


      hcitcl>echo $b


      Let me know if this works for you.

      Tom Rioux

      Baylor Health Care System

    • #64377
      Charlie Bursell

      C’mon guys, don’t make this harder than it should be.  For simple find/replace always us a string map and don’t worry about what needs to be escaped.

      string map “~r n” $var

    • #64378
      Kevin Kinnell

      Rickey Pritchett wrote:

      here is my code so far.


                 regsub -all {~r} $msg {n} msg


      Are you sure that’s what you want?  I can see replacing all of the characters with characters if you just want to look at the data, but it doesn’t look to me like that’s what you’re doing.

      Newline terminated messages end segments with “r” and entire messages with “rn”.

      Okay, with that out of the way…

      You’re running afoul of the Tcl quoting and the regsub command interpretation rules.   Generally, {sr} will get you the a string of the literal characters ‘s’ ” ‘r’ if there is only one round of interpretation,  but it gets you ‘s’ and a newline if there is another round.  The regsub command needs the regular expression string uninterpreted, so this is good for sending it the regex.  It quite unfairly doesn’t interpret the replacement string, however.  The easy way to get around this is to quote an escaped character with interpolation quotes — e.g. “r”, if you want to get a .



      regsub -all {~r} $msg “n” msg

      will probably do what you are trying to do, but are you sure that’s what you want?

    • #64379
      Kevin Kinnell

      Charlie Bursell wrote:

      C’mon guys, don’t make this harder than it should be.

      Jeez, Charlie!  The Principle of Least Confusion doesn’t apply to forum questions–you’re supposed to guess what’s really being asked!


      Merchant: No, no, no — you’re supposed to haggle!

        “Ten for that? you must be mad!”

        You know, HAGGLE!

      Brian(desperate): But I don’t care how much it is; I’ll pay whatever you like!

      Merchant: Oh dear oh dear oh dear…

      –kevin (I can always find a way to be a condescending jerk by not reading everything in a post 😳 ) kinnell

    • #64380
      Rick Pritchett

      i get this error now

      char map list unbalanced

         while executing

      “string map “~r n” $msg”

         (“run” arm line 8)

      using this code

       set msg [string map “~r n” $msg]

    • #64381
      Kevin Kinnell

      Charlie got burned by quoting too… It’s expecting a list.  Try


      string map {~r n} $msg

      –kevin (I feel slightly less embarassed now) kinnell

    • #64382
      Charlie Bursell

      Somebody has to keep me straight  😀

      I did this from my hotel and didn’t have a chance to test it

    • #64383
      John Hamilton

      I am pretty sure it will take more then one person to keep you stright Charlie.  😯

Viewing 7 reply threads
  • The forum ‘Cloverleaf’ is closed to new topics and replies.

Forum Statistics

Registered Users
Topic Tags