String.split()和replaceAll从Java到VB.net

时间:2013-12-03 21:49:04

标签: java vb.net

我在Java中有几行代码需要转换VB.net:

1) s.replaceAll("f\\((.*)\\).*", "$1").trim()
2) s.split("\\,")
3) s.split("\\s+")
4) s.replaceAll("[Tt]hreshold\\s*=(.*)", "$1").trim()

我使用Java到VB.net转换器,结果如下:

1) s = s.ReplaceAll("f\((.*)\).*", "$1").Trim()
2) s.Split("\,", True)
3) s.Split("\s+", True)
4) s.ReplaceAll("[Tt]hreshold\s*=(.*)", "$1").Trim()

我遇到的问题是这段代码不起作用。第2行和第3行有一个错误“参数匹配参数'分隔符'从'String'缩小到'1 - Char'的维数组'”。第1行和第4行说'ReplaceAll'不是'String'的成员。 我有点困惑,我怎么能让它的工作方式与Java代码完全相同?非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

在Java中,与.NET不同,String上的方法允许使用正则表达式。在.NET中,将使用正则表达式库(位于System.Text.RegularExpressions)。转换器未能识别出这种差异。

在Java和.NET中,字符串是不可变的,也就是说,Java代码不会更改s的值,并且这些行本身都是无操作的。您需要捕获每个调用的结果,例如作为变量,以供以后使用。

在第一行:

s.replaceAll("f\\((.*)\\).*", "$1").trim()

这可以使用Regex库表示为

Regex.Replace(s, "f\((.*)\).*", "$1").Trim()

现在走第二行:

s.split("\\,")

此表达式只是将逗号分隔的字符串拆分为数组。 (逗号不需要转义;此表达式与s.split(",")相同)。等效的VB代码不需要正则表达式,只需:

s.split(","c)

(或者,分配给变量dim Sa as String() = s.Split(","c)。)


第三行:

s.split("\\s+")

此模式使用正则表达式来使用在空格(任意数量的字符)上分隔的字符串。 Regex.Split方法返回相同的结果:

Regex.Split(s, "\s+")

最后,请:

s.replaceAll("[Tt]hreshold\\s*=(.*)", "$1").trim()

这个结构在功能上与第一个相同,虽然具有不同的模式。它可以用VB表示为:

Regex.Replace(s, "[Tt]hreshold\\s*=(.*)", "$1").Trim()