java - 如何在不使用 .parse() 的情况下解析 Java 中的字符串?

标签 java parsing

我正在尝试编写一个程序,它将接受一个字符串并将其解析为两个输出,分隔符是逗号。它循环直到用户输入字符“q”。

即:控制台提示输入,用户输入“first、second”,第二次提示输入“q”,输出结果为:

Enter input string:
First word: first
Second word: second

Enter input string:

如果输入中没有逗号,则抛出错误并再次提示

即用户输入“第一秒”,输出将是:

Enter input string:
Error: No comma in string
Enter input string:

以下是我目前所掌握的内容:

import java.util.Scanner;

public class ParseStrings {
   public static void main(String[] args) {
         Scanner scnr = new Scanner(System.in); // Scanner for standard input
         Scanner inSS = null;                   // Scanner to write input to buffer
         String firstWord = "";                 // First word string
         String secondWord = "";                // Second word string
         String userInput = "";                 // Input from prompt
         int i = 0;                             // Loop iterator
         boolean inputDone = false;             // Boolean to repeat while loop
         boolean hasComma = false;              // Boolean to check for comma

         // Do while inputDone is false
         while (!inputDone) {

            //Prompt user to input a string
            System.out.println("Enter input string: ");

            // Write string to userInput
            userInput = scnr.nextLine();

            // Exit program if user inputs q
            if((userInput.equals("q"))) {
               inputDone = true;
               break;
            }
            else{

               // Write userInput to buffer
               inSS = new Scanner(userInput);

               // Write first word from buffer
               firstWord = inSS.next();

               // Loop through first word string
               for (i = 0; i < firstWord.length(); ++i) {

                  // If char is a comma, write everything after to secondWord and set inputDone to true
                  if(firstWord.charAt(i) == ',') {
                     secondWord = inSS.next();
                     hasComma = true;
                  }
               }

               // If hasComma is false, return error
               if (!hasComma){
                  System.out.println("Error: No comma in string");
               }
               // Else print first word and second word
               else {
                  System.out.println("First word: " + firstWord);
                  System.out.println("Second word: " + secondWord);
                  System.out.println("");
                  System.out.println("");
               }
            }
         }
        return;
       }
    }

问题:

  • 我不知道如何从输出中删除逗号
  • 如果没有空格就会出错
  • 如果第一个单词和逗号之间有空格,则会写入第一个单词,但不会覆盖第二个单词的先前值(如果是给定的第一个输入,则会出现错误)
  • 我正在学习 Java 初学者类(class),我们还没有学习 .parse() 方法,因此目前它并不是一个真正的选择。

提前谢谢您!

最佳答案

尝试使用字符串分割。

String str="first, second";
String[] arr=str.split(",");
if(arr.length == 2) {
    System.out.println("First :" + arr[0]);
    System.out.println("Second :" + arr[1]);
} if(arr.length > 2) {
    System.out.println("More than 1 comma used.");
} else {
    System.out.println("Error. No comma found.");
}

如果您的字符串在逗号周围有空格,您可以使用trim()。

关于java - 如何在不使用 .parse() 的情况下解析 Java 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47292820/

相关文章:

java - 使用 Apache Tika 解析 RTF 文件内的表时出现问题

c# - 如何连接 2 个列表

java - 用Java解析HTML?

java - 以编程方式设置锁定超时 Spring Boot JPA

java - 添加/代替 SSL 的 SSO

html - MSHTML 解析 ARTICLE 标签无效

python xml转字符串,插入postgres

java - StAX 转义大于 (>)

java - NullPointer 异常 2D 数组类

c - 如何解析 MDNS 响应?