替换字符数组中的字符

时间:2018-07-21 22:17:17

标签: 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 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));

    }

}

请帮助,谢谢。

3 个答案:

答案 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的回答已经解释了它。祝你好运!