我有以下程序,我试图用“%20”替换字符数组中的空格。 例如,如果我有这个['a','b',''],则输出将是这个['a','b','%20']。
这是程序:
import java.util.*;
import java.util.Scanner;
class some_str
{ String str1;
String space_method(String str)
{
char[] chars = str.toCharArray();
//char[] s3=new char[chars.length];
for(char c:chars)
//for (int i=0;i<chars.length;i++)
if(Character.isWhitespace(c))
{
//over here I need to replace the space with '%20'
}
return "\n"+str;
}
}
public class space_str
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter string");
String str= sc.nextLine();
some_str st=new some_str();
System.out.println(st.space_method(str));
}
}
请帮助,谢谢。
答案 0 :(得分:1)
尝试一下:-
str.replace(" ", "%20");
此方法用%20
子字符串而不是 char 替换所有空格,因为%20
不是字符。
答案 1 :(得分:0)
这就是您想要的:
String replaceSpace(String string) {
StringBuilder sb = new StringBuilder();
for(char c : string.toCharArray()) {
if (c == ' ') {
sb.append("%20");
} else {
sb.append(c);
}
}
return sb.toString();
}
请注意,您不能将"%20"
放入char中,因为它是3个符号,而不是1个。这就是为什么您不应为此目的使用数组的原因。
通过库函数,您可以使用string.replace(" ", "%20")
或string.replaceAll(" ", "%20")
。
答案 2 :(得分:0)
我们知道字符串是不可变的,因此要用字符串中的%20替换所有空格字符,我们可以先将String转换为您要操作的字符数组,也可以使用StringBuilder类,您可以将其视为可变字符串,但它基本上是内部的char数组。 (还有StringBuffer基本上与StringBuilder相同,只是它是线程安全的。)
无论如何,以下程序可以满足您的需求。
public String spaceMethod(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (Character.isWhitespace(str.charAt(i))) {
sb.append("%20");
}
else
{
sb.append(str.charAt(i));
}
}
return sb.toString();
}
关于代码中的错误,Wow的回答已经解释了它。祝你好运!