【问题标题】:How to find and replace this string in Stata?如何在Stata中查找和替换此字符串?
【发布时间】:2017-06-01 05:19:16
【问题描述】:

我有一个字符串变量,看起来像这样x\y\z

x, y and z 的长度可能会有所不同,但它们都有两个斜线\

如何将第二个 \ 之前的部分(包括它自己)替换为其他值?

我试过了,但没用:

replace newvar=ustrregexra(oldvar, "\", "", 2)

它给了我一个空白newvar

【问题讨论】:

    标签: stata


    【解决方案1】:

    字符串操作的个人法则是正则表达式很棒,但通常有更简单、更直接的方法来解决问题。

    根据你告诉我们的,问题归结为

    1. 查找最后一个(第二个)反斜杠 \ 的位置。

    2. 将字符替换为其他字符。

    这是一种方法:

    clear 
    set obs 2 
    gen foo = cond(_n == 1, "frog\toad\newt", "dragon\griffin\unicorn")
    gen bar = "whatever" + substr(foo, strrpos(foo, "\") + 1, .) 
    list 
    
         +------------------------------------------+
         |                    foo               bar |
         |------------------------------------------|
      1. |         frog\toad\newt      whatevernewt |
      2. | dragon\griffin\unicorn   whateverunicorn |
         +------------------------------------------+
    

    该解决方案并不取决于替换文本是固定字符串,而是可以使用字符串表达式。

    这个问题的正则表达式解决方案必须首先认识到正则表达式中的反斜杠有其自身的作用。

    从您的问题来看,您需要处理 Unicode 的函数并不明显。

    另见split。您可以在反斜杠上使用split,然后使用最后生成的变量。

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 2011-08-22
      • 2021-10-03
      • 2016-11-21
      • 2015-09-22
      相关资源
      最近更新 更多