How do I get what's inbetween “ ” in a user inputted String? Java

后端 未结 6 1629
清酒与你
清酒与你 2021-01-26 13:58

I\'d like to retrieve whatever is in quotes that someone enters as a string, i\'m assuming it\'s substring that I need but i\'m not sure how.

When the user inputs a stri

6条回答
  •  無奈伤痛
    2021-01-26 14:31

    Try the next:

    public static void main(String[] args) {
        String input = "\"123\" hey 110 say \"I am not very good at Java\" but \" I can fish pretty well\"";
        int indexQuote = -1;
        boolean number = true;
        String data = "";
        for (int i = 0; i < input.length(); i++) {
            char ch = input.charAt(i);
            if (Character.isWhitespace(ch)) {
                if (data.length() > 0 && indexQuote == -1) {
                    if (number) {
                        System.out.println("It's a number: " + data);
                    } else {
                        System.out.println("It's a word: " + data);
                    }
                    // reset vars
                    number = true;
                    data = "";
                } else if (indexQuote != -1) {
                    data += ch;
                }
            } else if (ch == '"') {
                if (indexQuote == -1) {
                    number = false;
                    indexQuote = i;
                } else {
                    System.out.println("It's a quote: " + data);
                    // reset vars
                    number = true;
                    data = "";
                    indexQuote = -1;
                }
            } else {
                if (!Character.isDigit(ch)) {
                    number = false;
                }
                data += ch;
                if (data.length() > 0 && i == input.length() - 1) {
                    if (number) {
                        System.out.println("It's a number: " + data);
                    } else {
                        System.out.println("It's a word: " + data);
                    }
                }
            }
        }
    }
    

    Output:

    It's a word: hey
    It's a number: 110
    It's a word: say
    It's a quote: I am not very good at Java
    It's a word: but
    It's a quote:  I can fish pretty well
    

提交回复
热议问题