只需要一个单词列表,例如:
gram (g)
kilogram (kg)
pound (lb)
只是想知道如何在括号内得到单词,例如在“gram(g)”中获取“g”并将其调暗为新的字符串。 可能使用正则表达式?
感谢。
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:0)
您可以在空格处拆分并从第二个标记中删除parens(通过用空字符串替换它们)。
正则表达式也是一种选择,非常简单,其模式是
\w+\s+\((\w+)\)
这意味着,一个词,然后至少一个空格,然后打开parens,然后在真正的正则表达式中你搜索一个单词,最后是一个结束语。内括号是捕获括号,这使得可以引用单位g,kg,lb。