0

只要有一个单词列表,例如:

gram (g)
kilogram (kg)
pound (lb)

只是想知道如何获取括号内的单词,例如在“gram (g)”中获取“g”并将其调暗为新字符串。可能使用正则表达式?

谢谢。

4

3 回答 3

1

使用拆分功能..

strArr  = str.Split("(")  ' splitting 'gram (g)' returns an array ["gram " , "g)"] index 0 and 1
strArr2 = strArr[1].Split(")") ' splitting 'g)' returns an array ["g " ..]

字符串在

strArr2[0]

编辑

你希望 getAbbrev 和 getAbbrev2 是数组

尝试

Dim getAbbrev As String() = Str.Split("(") 
Dim getAbbrev2 as String() = getAbbrev[1].Split(")") 

要在不声明数组的情况下做到这一点,您可以这样做

"gram (g)".Split("(")[1].Split(")")[0]

但那是不可读的

编辑

你有一些非常微不足道的错误。我建议您首先加强对对象和声明的理解。然后你可以查看调用方法。我宁愿让你明白也不愿给你。重新阅读您拥有的书或寻找基本教程。

Dim unit As String = 'make sure this is the actual string you are getting, not sure where you are supposed to get the string value from => ie grams (g)

Dim getAbbrev As String() = unit.Split("(") 'use unit not Str - Str does not exist
Dim getAbbrev2 As String() = getAbbrev[1].Split(")") 'As no as - case sensitive

最后一行参考getAbbrev2而不是未知abbrev2

于 2012-04-25T20:43:49.843 回答
0

正则表达式的乐趣(我真的不是这里的专家,但经过测试和工作)

Imports System.Text.RegularExpressions
.....

Dim charsToTrim() As Char = { "("c, ")"c }
Dim test as String = "gram (g)" + Environment.NewLine +   
         "kilogram (kg)" + Environment.NewLine +   
         "pound (lb)"  

Dim pattern as String = "\([a-zA-Z0-9]*\)"
Dim r As Regex = new Regex(pattern, RegexOptions.IgnoreCase)
Dim m As Match = r.Match(test)
While(m.Success)
   System.Diagnostics.Debug.WriteLine("Match" + "=" + m.Value.ToString())
   Dim tempText as String = m.Value.ToString().Trim(charsToTrim)
   System.Diagnostics.Debug.WriteLine("String Trimmed" + "=" + tempText)
   m = m.NextMatch()
End While
于 2012-04-25T21:49:42.557 回答
0

您可以在空格处拆分并从第二个标记中删除括号(通过将它们替换为空字符串)。

正则表达式也是一种选择,非常简单,它的模式是

\w+\s+\((\w+)\)

这意味着,一个单词,然后是至少一个空格,然后是左括号,然后在真正的正则表达式中搜索一个单词,最后是一个右括号。内括号是捕获括号,可以引用单位 g、kg、lb。

于 2012-04-25T22:13:04.170 回答