簡體   English   中英

從Java到VB.net的String.split()和replaceAll

[英]String.split() and replaceAll from Java to 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行出現錯誤“參數匹配參數'separator'從'String'縮小為'1- Char的維數數組'”。 第1行和第4行說'ReplaceAll'不是'String'的成員。 我有些困惑,如何使它與Java代碼完全一樣地工作? 非常感謝您的幫助。

在Java中,與.NET不同, String方法允許使用正則表達式。 在.NET中,將改用正則表達式庫(位於System.Text.RegularExpressions )。 轉換器無法識別此差異。

在Java和.NET中,字符串都是不可變的,也就是說,Java代碼不會更改s的值,而代碼行本身是no-ops。 您需要捕獲每個調用的結果,例如作為變量,以備后用。

在第一行:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM