stata:删除指定字符最后一次出现后的所有内容

stata:删除指定字符最后一次出现后的所有内容,stata,Stata,我的数据是这样的 Var A(c)| B(/c/)| c.c F|G9 K|S|V|S F|A 我想在Stata中最后一次出现字符“|”之前获取所有内容,如下所示: NewVar Var A(c)| B(/c/)| F| K|S|V| F| egen NewVar=ends(Var), punct(|) last trim 最后一次出现字符“|”后可以给我一切。但是我还没有找到一种方法在角色最后一次出现之前获得所有东西。谢谢大家! 这里有一种方法: clear input str21

我的数据是这样的

Var
A(c)| B(/c/)| c.c
F|G9
K|S|V|S
F|A

我想在Stata中最后一次出现字符“|”之前获取所有内容,如下所示:

NewVar
Var
A(c)| B(/c/)|
F|
K|S|V|
F|

egen NewVar=ends(Var), punct(|) last trim   

最后一次出现字符“|”后可以给我一切。但是我还没有找到一种方法在角色最后一次出现之前获得所有东西。谢谢大家!

这里有一种方法:

clear 
input str21 Var
"A (c) | B(/ c/) | C.c"
"F | G9"
"K | S | V | S"
"F | A"
end 

gen Wanted = reverse(substr(reverse(Var),strpos(reverse(Var), "|"), . ))
l

     +-------------------------------------------+
     |                   Var              Wanted |
     |-------------------------------------------|
  1. | A (c) | B(/ c/) | C.c   A (c) | B(/ c/) | |
  2. |                F | G9                 F | |
  3. |         K | S | V | S         K | S | V | |
  4. |                 F | A                 F | |
     +-------------------------------------------+
这类问题的第一个调用端口是。自Stata的早期版本以来,上述解决方案就已成为可能(附带条件是
strpos()
以前称为
index()

另一种解决方案是使用最近添加的函数
strrpos()

对于大多数人来说,这似乎更直接、更和谐

gen Wanted2 = substr(Var, 1, strrpos(Var, "|"))