Jump to content
Sign in to follow this  
GioPet

Cannot concatenate '&' ampersand in a string

Recommended Posts

I have found no way to resolve concatenation with '&' symbol, as it is ignored in the concatenation by both vs.AlrtDialog(vs.Concat()) and +

I have also tried the folloinwing:

amp = str.replace('&', '%26')

but no success.

any suggestion?

g

Share this post


Link to post

Have you tried escaping it? like '\&' + 'The rest of the string.' I have never had this, so I don't know if that's the issue here.

TIP: In Python, it's better/easier/more readable to use string format:

'This is my string: %s & %s' % ('My String', MyObject)

Where %s will be replaced by the string representation of the things inside the tuple.

Share this post


Link to post

Hi Dieter,

yes I tried that..

What turned out is that the & was actually concatenated in the string, but for some reason vs.AlrtDialog does not display it.

as I was using vs.AlrtDialog to check the string, it took me a while to figure out that actually & was there..

and thanks once more for your TIP, it's all very appreciated as I've still got so much to learn about Python!

G

Share this post


Link to post

Hi Dieter,

yes, I have tried vs.Chr(38) but it behaves in the same way:

The following displays correctly:

amp = vs.Chr(38)
vs.AlrtDialog(vs.Concat('ampersand = ', amp))

but when i use concatenation (either vs.Concat or python native +) AlrtDialog doesn't display the ampersand.

Bu then I used the concatenated string to make a http call I realised that all my ampersand were there as expected...

Share this post


Link to post

Giovanni,

It's been 5 months, and you may already have the answer, but for those that don't...

This is not a Python problem, but rather a quirk of the AlrtDialog() call, and possibly its Modern Dialog underpinnings.

Use two ampersands '&&' to show a single ampersand in an Alert Dialog string.

Use a single ampersand '&' in Message() command strings and in normal string use.

This holds true for both Python and VectorScript when using AlrtDialog().

Examples:

1)

vs.AlrtDialog('Watch out for Alligators && Snakes!!!')
vs.Message('Good luck avoiding Death & Taxes!!!')

2)

forAlrt = True
S = "Your Appetizer: {} {} {}".format('Cheese', '&&' if forAlrt else '&' , 'Crackers')
vs.AlrtDialog(S)

forAlrt = False
S = "Your Appetizer: {} {} {}".format('Cheese', '&&' if forAlrt else '&' , 'Crackers')
vs.Message(S)

HTH,

Raymond

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

 

7150 Riverwood Drive, Columbia, Maryland 21046, USA   |   Contact Us:   410-290-5114

 

© 2018 Vectorworks, Inc. All Rights Reserved. Vectorworks, Inc. is part of the Nemetschek Group.

×