Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中如何从字符串中剥离字符串?_Java_Regex_String_Strip - Fatal编程技术网

在java中如何从字符串中剥离字符串?

在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

我正在编写一个方法,它接受一个字符串,该字符串只是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 = 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*=.*”