在不跳过一行的地方格式化 JTextArea 的结果?

Format the results of JTextArea where it doesn't skip a line?

我编写了一个程序,给定任何内容的列表,并在其周围添加单引号,并在末尾添加一个撇号,例如

"Dogs are cool" 变为 'Dogs'、'are'、'cool'

除了问题是程序给了单引号字符一行

这是结果

'190619904419','
190619904469','
190619904569','
190619904669','
190619904759','
190619904859','
190619904869','
'

查看它如何将单引号附加到第一行的末尾 什么时候应该是下面

'190619904419',
'190619904469',
'190619904569',
'190619904669',
'190619904759',
'190619904859',
'190619904869',

在JTextArea中输入文字,我做了以下操作

字符串行=JTextArea.getText().toString()

我把它扔进这个方法。

     private static String SQLFormatter(String list, JFrame frame){
     String ret = "";
     String currentWord = "";
     for(int i = 0; i < list.length(); i++){
         char c = list.charAt(i);

         if( i == list.length() - 1){
         currentWord += c;
         currentWord = '\'' + currentWord + '\'';
         ret += currentWord;
         currentWord = "";
     }
         else if(c != ' '){
             currentWord += c;
         }else if(c == ' '){

             currentWord = '\'' + currentWord + '\'' + ',';
             ret += currentWord;
             currentWord = "";
         }
     }


     return ret;
 }



Any advice, the bug is in there somewhere but im not sure if its the method or some jtextarea feature I am missing.

[JTEXT AREA RESULTS][1]


  [1]: https://i.stack.imgur.com/WXBKs.png

所以没有输入有点难分辨,但输入中似乎还有其他白色 space,如回车符 returns,这会影响您的解析。此外,如果事物有多个白色 space 或以白色 space 结尾,您可能会得到比您想要的更多(例如尾随逗号,我看到您努力避免)。您的原始例程适用于 "Dogs are cool",但不适用于 "Dogs \rare \rcool \r"。这是我认为可以解决问题的略微修改的版本(我还提取了未使用的 jframe 参数)。 我也试着把它想象成逗号在除第一个单词之外的任何单词之前。我为此引入了一个布尔值,尽管它可以检查 ret 是否为空。

public static String SQLFormatter(String list) {
String ret = "";
String currentWord = "";
boolean firstWord = true;
for (int i = 0; i < list.length(); i++) {
    // note modified to prepend comma to words beyond first and treat any white space as separator
    // but multiple whitespace is treated as if just one space
    char c = list.charAt(i);
    if (!Character.isWhitespace(c)) {
        currentWord += c;
    } else if (!currentWord.equals("")) {
        currentWord = '\'' + currentWord + '\'';
        if (firstWord) {
            ret += currentWord;
            firstWord = false;
        } else {
            ret = ret + ',' + currentWord;
        }
        currentWord = "";
    }
}


return ret;
}