我正在尝试清理和重构这段代码
Function GetLastRow(sht As Worksheet, colIndex As Long) As Long
With sht '<--| refer to the passed worksheet
GetLastRow = .Cells(.Rows.Count, colIndex).End(xlUp).row '<--| get its passed column last non empty cell
If .Cells(GetLastRow, colIndex) = "" Then GetLastRow = 0 '<--| check for empty column
End With
End Function
这很麻烦,因为有两个if语句并且难以阅读。有没有办法可以重构?
答案 0 :(得分:3)
考虑到这样的事实,你似乎只是试图找出String
如何开始并删除该部分,如果它从它开始,你可以只使用一个正则表达式开始。
public static void main(String[] args) {
System.out.println(test("~~TestAbc"));
System.out.println(test("/TestAbc"));
System.out.println(test("TestAbc"));
}
private static String test(String i) {
return i.replaceAll("^/|^~~", "");
}
O / P
TestAbc
TestAbc
TestAbc
答案 1 :(得分:2)
对于像这样的简单片段,我会这样做:
if (i.startsWith("/")) {
i = i.substring(1);
} else if (i.startsWith("~~")) {
i = i.substring(2);
}
如果有四个或五个或更多不同的前缀要剥离,我会发明一些更通用的东西。