我有一个字符串,其中包含单词“TAG”,后跟整数,下划线和另一个单词。
例如:“TAG123_Sample”
我需要剪切“TAGXXX_”模式并仅获取单词Sample。意思是我将不得不剪切单词“TAG”和整数后跟和下划线。
我编写了以下代码,但它不起作用。我做错了什么?我怎样才能做到这一点?请指教。
Private Sub UserForm_Initialize()
Me.ComboBox1.AddItem ("Badge 1")
Me.ComboBox1.AddItem ("Badge 2")
Me.ComboBox1.AddItem ("Badge 3")
Me.ComboBox1.AddItem ("Badge 4")
End Sub
Private Sub Generate_Click()
If ComboBox1.Value = "Badge 1" Then B1
If ComboBox1.Value = "Badge 2" Then B2
If ComboBox1.Value = "Badge 3" Then B3
If ComboBox1.Value = "Badge 4" Then B4
End Sub
Sub B1()
Dim s As Shape
Dim w As Double
Dim h As Double
ActiveLayer.CreateEllipse w, h
End Sub
答案 0 :(得分:3)
您目前正在否定(匹配 NOT 一个数字),您需要修改正则表达式,如下所示:
String s = "TAG123_Sample";
String r = Regex.Replace(s, @"TAG\d+_", "");
Console.WriteLine(r); //=> "Sample"
<强>解释强>:
TAG match 'TAG'
\d+ digits (0-9) (1 or more times)
_ '_'
答案 1 :(得分:1)
您可以使用String.Split
:
string[] s = "TAG123_Sample".Split('_');
Console.WriteLine(s[1]);
答案 2 :(得分:1)
尝试这种情况肯定会在这种情况下起作用:
resultString = Regex.Replace(sentence ,
@"^ # Match start of string
[^_]* # Match 0 or more characters except underscore
_ # Match the underscore", "", RegexOptions.IgnorePatternWhitespace);
答案 3 :(得分:1)
如果你的字符串包含1个下划线而你需要获得一个子字符串,则不需要正则表达式。
这是基于Substring
+ IndexOf
的方法:
var res = sentence.Substring(sentence.IndexOf('_') + 1); // => Sample
请参阅IDEONE demo