Java 替换字符数组中的字符

Java 替换字符数组中的字符,java,arrays,Java,Arrays,我有以下程序,我正在尝试用“%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

我有以下程序,我正在尝试用“%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));

    }

}
import java.util.*;
导入java.util.Scanner;
给一些学生上课
{字符串str1;
字符串空间\方法(字符串str)
{
char[]chars=str.toCharArray();
//char[]s3=新字符[chars.length];
for(char c:chars)
//对于(int i=0;i这是您想要的:

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”
放入字符中,因为它是3个符号,而不是1个。这就是为什么不应为此使用数组的原因

对于库函数,您可以使用
string.replace(“,“%20”)
string.replaceAll(“,“%20”)
尝试以下操作:-

str.replace(" ", "%20");

此方法将所有空格替换为
%20
子字符串,而不是字符,因为
%20
不是字符。

我们知道字符串是不可变的,所以要用字符串中的%20替换所有空格字符,我们可以先将字符串转换为您所做的字符数组,然后再进行操作或我们可以使用StringBuilder类,您可以将其视为可变字符串,但它在内部基本上是一个字符数组(还有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();
}
publicstringspacemethod(stringstr){
StringBuilder sb=新的StringBuilder();
对于(int i=0;i

关于代码中的错误,魔兽世界的答案已经解释了。祝你好运!

你的问题是什么?%20是3个符号,而不是1,你不能将其放入字符中。你可能希望
StringBuilder
为空以使其正常工作。编辑:我写这篇文章时,你似乎已经修复了它:)@现在不是你。我不小心把字符串放进去了。谢谢@Wow。我是Java新手,一直是python开发人员。@Adrija没问题。你应该使用库函数
replace
replaceAll
,就像其他答案中提到的那样,这样可以节省一些打字和代码大小:)