Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Parsing escape characters

 
Rachel Swailes
Ranch Hand
Posts: 434
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi there

I am busy building a translator for the website here at work. I now have the strings that need to be translated, but I need to parse them to get them into a more user friendly format.

So I have the string
"'hello '. CATNAME . ' rachel\'s cat'"

For php, I need to keep the single quotes that mark the beginning and end of the php string.

So what I am doing is reading for every single quote to find the beginning and end of these strings. But the \' is also getting read as a plain '.

I thought about replacing all \ with \\ but I can't use the replaceAll function because it doesn't pick up the \ when they are used as escape characters

So enough rambling. And here is a plain question because if I know this I'm sure I can solve the problem.

If I have a string = "'hello '.CATNAME.' rachel\'s cat'";
How can I get it to be = "#hello #.CATNAME.# rachel\'s cat#";


Many kind regards and a wonderful weekend!
Cheers, Rachel
 
Ray Stojonic
Ranch Hand
Posts: 326
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

[ November 05, 2004: Message edited by: Ray Stojonic ]
 
jefff willis
Ranch Hand
Posts: 113
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You can try this.

I found that I couldn't do it in less that four steps.



s is the string, t is a temporary version of string, n is the befinnings of a new string, and f is the final string.

hack hack hack hack hack hack hack
 
Ray Stojonic
Ranch Hand
Posts: 326
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
My pseudocode works just fine, but jefff got me thinking about how replaceAll is a regex savvy method, so:

"'hello '.CATNAME.' rachel\\'s cat'".replaceAll( "([^\\\\])'|^'", "$1#" );

output: #hello #.CATNAME.# rachel\'s cat#
 
jefff willis
Ranch Hand
Posts: 113
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ray,

nice.

I spun my wheels trying to get the regex down and couldn't do it.

good job.
 
Rachel Swailes
Ranch Hand
Posts: 434
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi there.

I tried all except the regex one (I'm gonna play with that now.) But all of the solutions center around being able to find the \ and as I said before, when it's used as part of an escape char, myString.indexOf the \ will return a -1. So a solution based on finding this doesn't work.

Ok, going to play with the regex one now.

Cheers and thanks for the suggestions!!
Rachel
 
Rachel Swailes
Ranch Hand
Posts: 434
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
OK, how bizarre is this. When I type
String a = "hello rachel\'s cat"

Java picks the escape char up as a string literal.

But when I read from a file, I can get the \. So problem solved since I am reading it from files!

Thanks to everyone for the suggestions!
Cheers,
Rachel
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic