1

我正在编写一个方法,该方法接受一个字符串,该字符串仅是 java 属性/字段声明并仅返回属性名称。例如:

private double d = 1000;
private boolean b;
private final int f = 100;
private char c = 'c';

因此,如果参数是上述之一,则该方法应仅返回 d、b、f 或 c。算法应该如何实现。我曾尝试使用正则表达式在类型之后去除单词,但它变得非常复杂。谁能给我一些线索,谢谢

4

2 回答 2

1

试试这个

    String type = str.replaceAll(".*\\s(.)\\s*=.*", "$1");
于 2013-09-18T07:39:11.277 回答
1

您可以在没有正则表达式的情况下使用等号之前的字符串:

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    while(true){
        String theString = sc.nextLine();
        String left = theString.split("=")[0].trim(); // Split into variable part and value part
        int lastSpace = left.lastIndexOf(" "); // there must be a space before a variable declaration, take the index
        String variableName = left.substring(lastSpace+1); // take the variable name
        System.out.println(variableName);
    }
}

如果你在 Python 上实现它,它会容易得多:

the_string = 'private double d = 1000;'
print the_string.split('=',1)[0].strip().rsplit(' ',1)[1]
于 2013-09-18T07:46:54.387 回答