我正在编写一个方法,该方法接受一个字符串,该字符串仅是 java 属性/字段声明并仅返回属性名称。例如:
private double d = 1000;
private boolean b;
private final int f = 100;
private char c = 'c';
因此,如果参数是上述之一,则该方法应仅返回 d、b、f 或 c。算法应该如何实现。我曾尝试使用正则表达式在类型之后去除单词,但它变得非常复杂。谁能给我一些线索,谢谢
试试这个
String type = str.replaceAll(".*\\s(.)\\s*=.*", "$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]