简化两个if语句

时间:2016-09-01 11:20:31

标签: java

我正在尝试清理和重构这段代码

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语句并且难以阅读。有没有办法可以重构?

2 个答案:

答案 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);
    }

如果有四个或五个或更多不同的前缀要剥离,我会发明一些更通用的东西。