<div dir="ltr"><div>sorry I was a bit sloppy in my previous post. Here it is corrected:</div><div><br></div><div> I was also curious whether there's functionality for the following (I wrote my own versions but they might not consider all cases)<br>
</div><div><br></div><div>bool isStringLitteral(string); //tests whether a string represents a string litteral<br></div><div><div>unittest{  </div><div>  assert(`"abc"`. isStringLitteral);</div><div>  assert(`q{abc}`. isStringLitteral);</div>
<div>  assert(!"abc". isStringLitteral);</div><div>}</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">string escapeString(string); // escapes a string; analog to std.process.escapeShellFileName which btw could be placed in a different module than std.process (std.string?)</div>
<div class="gmail_extra"><div class="gmail_extra">string escapeString(string a){</div><div class="gmail_extra"><span class="" style="white-space:pre">  </span>import std.array:replace;</div><div class="gmail_extra"><span class="" style="white-space:pre">    </span>return `r"`~a.replace(`"`,`" "\"" r"`)~`"`; // not sure if it'll always work</div>
<div class="gmail_extra">}</div><div class="gmail_extra"><div>unittest{  </div><div>  assert(`abc`. escapeString==r"`abc`");</div><div>}<br></div></div><div class="gmail_extra"><div class="gmail_extra">string unEscapeString(string a); //inverse operation to escapeString</div>
</div><div class="gmail_extra"><div class="gmail_extra"><div>unittest{  </div><div>  assert(`"abc"`. unEscapeString ==`abc`);</div><div>}<br></div></div><div class="gmail_extra"></div></div><div class="gmail_extra">
<br></div><div class="gmail_extra">I several use cases for those, which I can explain if it's unclear.</div><br><div class="gmail_quote">On Sun, Sep 8, 2013 at 8:16 PM, Timothee Cour <span dir="ltr"><<a href="mailto:thelastmammoth@gmail.com" target="_blank">thelastmammoth@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">
<div class="im">On Fri, Sep 6, 2013 at 9:38 PM, Jonathan M Davis <span dir="ltr"><<a href="mailto:jmdavisProg@gmx.com" target="_blank">jmdavisProg@gmx.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>On Friday, September 06, 2013 21:15:44 Timothee Cour wrote:<br>


> I'd like to have a function:<br>
><br>
> @nothrow bool isNumberLitteral(string a);<br>
> unittest{<br>
> assert(isNumberLitteral("1.2"));<br>
> assert(!isNumberLitteral("a1.2"));<br>
> assert(!isNumberLitteral("a.b"));<br>
> }<br>
><br>
> I want it nothrow for efficiency (I'm using it intensively), and try/catch<br>
> as below has significant runtime overhead (esp when the exception is<br>
> caught):<br>
<br>
</div>You could try std.string.isNumeric.<br></blockquote><div><br></div></div><div>beautiful, thanks. not clear if it's better in std.string rather than std.conv. </div><div><br></div><div>While I'm at it, I was also curious whether there's functionality for the following (I wrote my own versions but they might not consider all cases) :</div>
</div></div></div></blockquote><div><br></div><div><div>sorry I was a bit sloppy in my previous post. Here it is corrected:</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>unittest{<br></div><div>  // isStringLitteral: tests whether a string represents a string litteral</div><div>  assert(`"abc"`. isStringLitteral);</div>
<div>  assert(`q{abc}`. isStringLitteral);</div><div>  assert(!"abc". isStringLitteral);</div><div>}<br></div></div></div></div></blockquote><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div><br></div><div>//escapeString:</div><div><div>/// escapes a to be pasted as is in D code (analog to std.process.escapeShellFileName which btw has little business to do in std.process)</div>
<div>string escapeD(string a){</div><div><span style="white-space:pre-wrap">  </span>import std.array:replace;</div><div><span style="white-space:pre-wrap">        </span>return `r"`~a.replace(`"`,`" "\"" r"`)~`"`;</div>
<div>}<br></div></div><div><br></div><div>//inverse operation to unEscapeString</div><div>string escapeString(string a);</div><div><br></div><div><br></div><div>I have clear use cases for those, which I can explain if it's not obvious.</div>
<div class="im"></div></div></div></div></blockquote></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>I meant s/isQuotedString/isStringLitteral</div></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div><br></div><div>unittest{<br></div><div>  // isQuotedString: tests whether a string represents a quoted string.</div><div>  assert(`"abc"`. isQuotedString);</div><div>  assert(`q{abc}`. isQuotedString);</div>

<div>  assert(!"abc". isQuotedString);</div><div>}<br></div></div></div></div></blockquote><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div><br></div><div>//escapeString:</div><div><div>/// escapes a to be pasted as is in D code (analog to std.process.escapeShellFileName which btw has little business to do in std.process)</div>

<div>string escapeD(string a){</div><div><span style="white-space:pre-wrap">  </span>import std.array:replace;</div><div><span style="white-space:pre-wrap">        </span>return `r"`~a.replace(`"`,`" "\"" r"`)~`"`;</div>

<div>}<br></div></div><div><br></div><div>//inverse operation to unEscapeString</div><div><div>string escapeString(string a);</div></div><div><br></div><div><br></div><div>I have clear use cases for those, which I can explain if it's not obvious.</div>
<div class="im">
<div><br></div><div> </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
But it's true that it would be nice to have some sort of counterpart to<br>
<a href="http://std.conv.to" target="_blank">std.conv.to</a> which checked whether a conversion was possible or which returned<br>
its argument via an out parameter and returned whether it succeeded or not (or<br>
something similar) for cases where you need to avoid throwing.<br>
<br>
<a href="http://d.puremagic.com/issues/show_bug.cgi?id=6840" target="_blank">http://d.puremagic.com/issues/show_bug.cgi?id=6840</a><br>
<a href="http://d.puremagic.com/issues/show_bug.cgi?id=6843" target="_blank">http://d.puremagic.com/issues/show_bug.cgi?id=6843</a></blockquote><div><br></div></div><div>Agreed with this and <a href="http://std.conv.to" target="_blank">std.conv.to</a> calling a nothrow function that returns a boolean. </div>

<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
<span><font color="#888888"><br>
- Jonathan M Davis<br>
</font></span></blockquote></div><br></div></div>
</blockquote></div><br></div></div>