Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.soft-sys.math.mathematica > #3488
| From | Albert Retey <awnl@gmx-topmail.de> |
|---|---|
| Newsgroups | comp.soft-sys.math.mathematica |
| Subject | Re: Operations on RegularExpression matches |
| Date | 2011-07-05 09:10 +0000 |
| Organization | Steven M. Christensen and Associates, Inc and MathTensor, Inc. |
| Message-ID | <iuukdh$eln$1@smc.vnet.net> (permalink) |
| References | <ius5nq$2g4$1@smc.vnet.net> |
Hi, > > I have string of all lower case letters: > > string = "this is a string" > > I wish to capitalize the first letter: > > StringReplace[string, StartOfString ~~ x_ -> ToUpperCase[x]] (* Does want I want *) > > Now I try to do the same thing using RegularExpression: > > StringReplace[string, RegularExpression["(^.)"] -> ToUpperCase["$1"]] > > which fails (returns original string without capitalization). > > I know the match is occurring since > > StringReplace[string, RegularExpression["(^.)"] -> ToUpperCase["$1X"]] > > returns > > "tXhis is a string" > > What am I missing about using the matched part of a regular expression? the problem is that ToUpperCase is done on the pattern, not the match. You need RuleDelayed so that ToUpperCase is done on the matching string: StringReplace[string, RegularExpression["(^.)"] :> ToUpperCase["$1"]] this is not necessary with the StringExpression approach since then ToUpperCase[x] remains unevaluated since x is no string. hth, albert
Back to comp.soft-sys.math.mathematica | Previous | Next — Previous in thread | Find similar | Unroll thread
Operations on RegularExpression matches Jon Joseph <josco.jon@gmail.com> - 2011-07-04 10:47 +0000 Re: Operations on RegularExpression matches "Oleksandr Rasputinov" <oleksandr_rasputinov@hmamail.com> - 2011-07-05 09:15 +0000 Re: Operations on RegularExpression matches Albert Retey <awnl@gmx-topmail.de> - 2011-07-05 09:10 +0000
csiph-web