[英]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.