在不跳过一行的地方格式化 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;
}
我编写了一个程序,给定任何内容的列表,并在其周围添加单引号,并在末尾添加一个撇号,例如
"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;
}