Raw strings starting/ending with backtick
Cay Horstmann
cay.horstmann at sjsu.edu
Sun Nov 25 07:39:39 UTC 2018
I agree that it is inelegant that there is no good syntax for raw
strings starting with a backtick. Some time ago
(http://horstmann.com/unblog/2018-06-01), I suggested that an initial
newline after the backticks could count as part of the raw string delimiter:
String myNameInABox = ```
+-----+
| Cay |
+-----+```; // This string starts with +
Ok, maybe it's not brilliant, but it solves two problems: (1) how to
format multiline strings that should be aligned, without having to strip
out the initial newline (2) how to declare strings that start with a
backtick.
Cheers,
Cay
Le 24/11/2018 à 18:57, Attila Kelemen a écrit :
> Thanks for all the answers. I was just a little curious if I missed
> something and there is nice syntax for this as well. Not that I could
> come up with something brilliant, only if Java was a brand new language,
> then 3 "quote" types would solve all the issues (and escaping would be
> completely useless). Obviously, this is not really an option here.
>
> James Laskey <james.laskey at oracle.com <mailto:james.laskey at oracle.com>>
> ezt írta (időpont: 2018. nov. 24., Szo, 18:30):
>
>
>
> Sent from my iPhone
>
> > On Nov 24, 2018, at 11:34 AM, Weijun Wang <weijun.wang at oracle.com
> <mailto:weijun.wang at oracle.com>> wrote:
> >
> >
> >
> >> On Nov 24, 2018, at 9:11 PM, Jim Laskey <james.laskey at oracle.com
> <mailto:james.laskey at oracle.com>> wrote:
> >>
> >> There are several approaches but the simplest is using
> strip(). Example,
> >>
> >> `` `abc` ``.strip()
> >>
> >> Concat is another approach,
> >>
> >> “`” + `abc` + “`”
> >
> > But this means the literal inside the constant pool of the class
> will be "`abc` ", right? This is a little uncomfortable to me.
> >
> That’s the plan.
>
> >>
> >> Not perfect but other delimiter choices also have these edge cases.
> >
> > How about the Rust r###"..."### style?
>
> >
> > Thanks
> > Max
> >
> >>
> >> Cheers,
> >>
> >> — Jim
> >>
> >>
> >> Sent from my iPad
> >>
> >>> On Nov 24, 2018, at 8:55 AM, Attila Kelemen
> <attila.kelemen85 at gmail.com <mailto:attila.kelemen85 at gmail.com>> wrote:
> >>>
> >>> Hi,
> >>>
> >>> Reading the JEP on raw string literals, I saw no mentions of
> the case when a string starts (or ends) with backtick. I guessed,
> that maybe the compiler will close the literal when it finds more
> than half the number of backticks than the beginning (nothing
> implied this behaviour just tried it and I know that it might be
> very suprising in other cases). I have tried with the latest early
> access compiler and (not too suprisingly) it didn't behave this way
> and simply failed when starting the literal with a backtick.
> >>>
> >>> My question is, of course: What is the strategy for this case?
> Or is it explicitly ignored as too much of an edge case (and left to
> the developer to deal with)?
> >>>
> >>> Thanks,
> >>> Attila Kelemen
> >>
> >
>
--
Cay S. Horstmann | http://horstmann.com | mailto:cay at horstmann.com
More information about the compiler-dev
mailing list