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