在java中如何从字符串中剥离字符串?
我正在编写一个方法,它接受一个字符串,该字符串只是java属性/字段声明,并且只返回属性名。e、 g:在java中如何从字符串中剥离字符串?,java,regex,string,strip,Java,Regex,String,Strip,我正在编写一个方法,它接受一个字符串,该字符串只是java属性/字段声明,并且只返回属性名。e、 g: private double d = 1000; private boolean b; private final int f = 100; private char c = 'c'; 因此,如果参数是上述参数之一,则该方法应仅返回d、b、f或c。应该如何实现is算法。我曾尝试使用正则表达式在类型后去掉单词,但它变得非常复杂。谁能给我一些线索吗,谢谢试试这个 String type
private double d = 1000;
private boolean b;
private final int f = 100;
private char c = 'c';
因此,如果参数是上述参数之一,则该方法应仅返回d、b、f或c。应该如何实现is算法。我曾尝试使用正则表达式在类型后去掉单词,但它变得非常复杂。谁能给我一些线索吗,谢谢试试这个
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]
您可能需要添加一个
[\\s]*
来处理变量名和赋值之间没有空格(或额外空格)的情况:String type=declaration.replaceAll(“.*(.)[\\s]*=*”,“$1”)代码>我同意,这样更好,你的代码在这个字符串上会失败,对吗<代码>字符串a=“int b=10”代码>。它将打印b
,而不是a
。鬼鬼祟祟的,但有可能;)。您应该在第一个Kleene星上使用lazy,我认为您应该满足变量名可能不止一个字符的情况:“*?\\s+(\\s+)\\s*=.*”