Java 当我试图打印新行时,为什么要将新行附加到数组元素?
我得到以下输出(关键字的值为sparktg):Java 当我试图打印新行时,为什么要将新行附加到数组元素?,java,arrays,string,newline,Java,Arrays,String,Newline,我得到以下输出(关键字的值为sparktg): 为什么在匹配[m]的情况下,“sparktg”和“1”之间有一个新行?如果您无法控制输入,则可以在使用输入之前执行trim()。这消除了任何\n和空格 match:sparktg 1 keyword:sparktg1 false 您可以编写一个实用方法来实现这一点,从而使它更干净 if(match[m] != null) { System.out.println("match:"+match[m].trim()); } if(keyword
为什么在匹配[m]的情况下,“sparktg”和“1”之间有一个新行?如果您无法控制输入,则可以在使用输入之前执行
trim()
。这消除了任何\n
和空格
match:sparktg
1
keyword:sparktg1
false
您可以编写一个实用方法来实现这一点,从而使它更干净
if(match[m] != null) {
System.out.println("match:"+match[m].trim());
}
if(keyword != null) {
System.out.println("keyword:"+keyword.trim());
}
并按如下方式使用:
public String sanitize(String input) {
return input != null ? input.trim() : null;
}
如果无法控制输入,则可以在使用输入之前执行
trim()
。这消除了任何\n
和空格
match:sparktg
1
keyword:sparktg1
false
您可以编写一个实用方法来实现这一点,从而使它更干净
if(match[m] != null) {
System.out.println("match:"+match[m].trim());
}
if(keyword != null) {
System.out.println("keyword:"+keyword.trim());
}
并按如下方式使用:
public String sanitize(String input) {
return input != null ? input.trim() : null;
}
我能看到的唯一原因是,
match[0]
已经以换行符结尾。在添加“1”
之前,应通过输出匹配[0]
进行检查。一个好的做法是以这种形式输出:
match[m] = sanitize(match[m]);
keyword = sanitize(keyword);
…因此,使用|
来清楚地标记字符串的开始和结束位置
您可以使用trim()
System.out.println("|"+match[0]+"|");
但是,这也会删除空格和制表符,这对您来说可能是问题,也可能不是问题。当我比较字符串时,为了安全起见,我通常先修剪两个字符串,但前提是不考虑空格。我能看到的唯一原因是匹配[0]
已经以换行符结尾。在添加“1”
之前,应通过输出匹配[0]
进行检查。一个好的做法是以这种形式输出:
match[m] = sanitize(match[m]);
keyword = sanitize(keyword);
…因此,使用|
来清楚地标记字符串的开始和结束位置
您可以使用trim()
System.out.println("|"+match[0]+"|");
但是,这也会删除空格和制表符,这对您来说可能是问题,也可能不是问题。当我比较字符串时,为了安全起见,我通常会先修剪两个字符串,但前提是不考虑空格。试试这个。在解析之前替换所有新行
match[m] = match[m].trim() + "1";
私有静态int索引(字符串[]匹配,字符串关键字){
int m=0;
对于(int k=0;k试试这个。在解析之前替换所有新行
match[m] = match[m].trim() + "1";
私有静态int索引(字符串[]匹配,字符串关键字){
int m=0;
对于(intk=0;k,这不是答案,而是代码的符号
match[m].equals(null)
将抛出NullPointerException
。在调用对象的任何方法之前,检查match[m]
是否不等于null的正确方法是:mathc[m]!=null
private static int Index(String[] match,String keyword){
int m=0;
for(int k=0;k<match.length;k++){
if(match[k]!=null)
match[k]= match[k].replace("\n", "");
}
if(keyword!=null)
keyword= keyword.replace("\n", "");
keyword=keyword+"1";
match[m]=match[m]+"1";
System.out.println("match:"+match[m]);
System.out.println("keyword:"+keyword);
System.out.println(match[m].equals(keyword));
while(!(match[m].equals("")) && !(match[m].equals(null))){
System.out.println("yes");
if(match[m].equals(keyword)){
break;
}
else
m++;
}
return m;
}
与此相反:
match[m] != null && !match[m].equals("")
这不是答案,而是代码的符号
match[m].equals(null)
将抛出NullPointerException
。在调用对象的任何方法之前,检查match[m]
是否不等于null的正确方法是:mathc[m]!=null
private static int Index(String[] match,String keyword){
int m=0;
for(int k=0;k<match.length;k++){
if(match[k]!=null)
match[k]= match[k].replace("\n", "");
}
if(keyword!=null)
keyword= keyword.replace("\n", "");
keyword=keyword+"1";
match[m]=match[m]+"1";
System.out.println("match:"+match[m]);
System.out.println("keyword:"+keyword);
System.out.println(match[m].equals(keyword));
while(!(match[m].equals("")) && !(match[m].equals(null))){
System.out.println("yes");
if(match[m].equals(keyword)){
break;
}
else
m++;
}
return m;
}
与此相反:
match[m] != null && !match[m].equals("")
在添加1
之前,您有sparktg\n
内部match[0]
我刚刚测试了您的代码,它看起来很好。您能告诉我们如何使用它吗?同样在ifmatch[m]中。等于(null)
您将只检查索引m
上的数组match
是否存储字符串“null”。如果match[m]
没有设置值(null)
您将看到java.lang.NullPointerException
,因为它将尝试执行null.equals(null)
。如果这不是您的意图,请改为使用match[m]==null
或者在您的情况下使用match[m]!=null
。您在match[0]中有sparktg\n
在添加1
之前,我刚刚测试了你的代码,它看起来很好。你能告诉我们你如何使用它吗?同样在你的ifmatch[m]中。equals(null)
你只会检查索引m
上的数组是否匹配存储字符串“null”。如果match[m]
没有设置值(null)
您将看到java.lang.NullPointerException
,因为它将尝试执行null.equals(null)
。如果这不是您的意图,请使用match[m]==null
,或者在您的情况下使用match[m]!=null
。如果您只想删除换行,请查看String.replaceAll()
或String.replaceFirst()
,这将允许您通过正则表达式控制替换。如果您只对删除换行符感兴趣,请查看String.replaceAll()
或String.replaceFirst()
,这将允许您通过正则表达式控制替换。