Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: subinstr and special characters ? and *


From   Eric Booth <ebooth@ppri.tamu.edu>
To   "<statalist@hsphsun2.harvard.edu>" <statalist@hsphsun2.harvard.edu>
Subject   Re: st: subinstr and special characters ? and *
Date   Sat, 14 Aug 2010 18:10:07 +0000

<>

As Nick suggests, use use a regex function:
*************!
cap macro drop _all

//example 1//
clear all
local a p_2_3456
 local b1  = regexr("`a'" , "_[0-9]+_" ,"__")
 local b2  `=regexr("`a'" , "_[0-9]+_" ,"__")'
 local b3  "`=regexr("`a'" , "_[0-9]+_" ,"__")'"
macro dir _b1 _b2 _b3


//example 2:   if instead "`a'" is a variable you would:
clear all
set obs 1
local a p_2_3456
g i = "`a'"
g i2 =  regexr("`a'" , "_[0-9]+_" ,"__")
li
local b = i2
di "`b'"


//example 3//
	/*
finally, the macro extended_fcn commands don't have regex, just subinstr
so, you could use a loop  & subinstr to cycle over the possible characters 
you want to  remove if your set on using extended_fcns 
	*/

clear all
	numlist  "1(1)9"
foreach n in `c(alpha)'  `c(alpha)'  `r(numlist)'  {
 	qui local a2: subinstr local a "_`n'_" "__", count(local break)
		if `break'>0 {
			qui local b= "`a2'"
		}
	}
di "`b'"
*************!

~ Eric

__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
ebooth@ppri.tamu.edu
Office: +979.845.6754



On Aug 13, 2010, at 5:25 AM, A Loumiotis wrote:

> Hi,
> 
> Is there a way to use subinstr to replace a pattern that is given with
> the special characters ? or * with something else?
> 
> For example:
> 
> local a p_2_3456
> local b: subinstr local a "_?_" "__"
> di "`b'"
> local b=subinstr("`a'","_?_","__",1)
> di "`b'"
> 
> I would expect that b will now be p__3456 but subinstr does not
> recognize _?_ to include _2_ .
> Is there anyway to do this?
> Thanks,
> Antonis




*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index