Java:如何将字符串中的每个字符转换为' *'除了空间

时间:2017-10-14 17:25:27

标签: java string

我已经设置了一个任务,将字符串中的每个字符串转换为*,除了该字符串中的任何空格(字符串是用户输入),一个警告是我必须使用for循环。我的代码如下......当前我遇到的问题是,当我尝试在if语句条件中使用char时,我得到一个"类型不匹配:无法从char转换为Boolean"错误。所有帮助表示赞赏...

public static void main(String[] args) {
    //declare vars
    Scanner input = new Scanner(System.in);
    String name = "";
    int length = 0;

    //get name string
    System.out.println("Enter your name");
    name = input.nextLine();

    //get length of name string
    length = name.length();

    //convert name string to array of characters
    char[] nameChars = name.toCharArray();

    //iterate over array of chars replacing each 
    // char with * and space with space
    for (int index=0;index==length;index++){
        //if the char is a space then do nothing
        if (nameChars[index] = ' ') {
        //else convert to *
        } else {
            nameChars[index] = '*';
        }
    }

    //convert array back to string and output
    String newName = new String(nameChars);
    System.out.println(newName);

    //close resources
    input.close();

}

8 个答案:

答案 0 :(得分:2)

不要编写所有代码,请尝试以下方法:

String newName = name.replaceAll("\\S", "*");

正则表达式\S匹配"任何非空白字符"。

答案 1 :(得分:0)

您必须使用==代替=,如下所示:

if (yourChar == ' ') {
//your code ...
}

答案 2 :(得分:0)

使用==代替=进行if条件检查,因为==是关系运算符,=是赋值运算符。

index==length更改为index < length否则您的循环将永远无法运行!最初为index = 0,而长度为正值,index!=length则为&lt;li&gt;Article One&lt;/li&gt; &lt;li&gt;Article One&lt;/li&gt; &lt;li&gt;Article One&lt;/li&gt; &lt;/ol&gt; 。所以循环永远不会运行。

答案 3 :(得分:0)

尝试以下方法

if (nameChars[index] == ' ') {
    //else convert to *
    } else {
        nameChars[index] = '*';
    }

答案 4 :(得分:0)

如果你想使用你的代码,那么你的条件是错误的,如果字符串char你必须更改它,那么你将空间char影响到当前nameChars[index] = ' 'nameChars[index] == ' ',请注意双等号[{1}}。

但是,我建议你使用这个简单的条件,因为当前==是空格char时你不会做任何事情,那么你不必检查是否它是一个太空炭:

char

答案 5 :(得分:0)

你为什么要发明一辆自行车? 最好使用Java的强大功能并完全替换String.class的所有方法:

String input = "123 wer 456 zxcv!";
String result = input.replaceAll("[^ ]", "*");
System.out.println(result);

答案 6 :(得分:0)

  

Java:如何将字符串中的每个字符转换为'*',空格

除外

你可以在没有任何循环的情况下在一行中完成..

String str = pw.replaceAll("[^\\s]", "*");

<强> TEST:

String str1 = "ASDAS sad!@# !@#^% ?".replaceAll("[^\\s]", "*");
System.out.println(str1);

<强>输出:

***** ****** ***** *

注意:对于char[],您可以使用String.valueOf(yourArray).replaceAll()。

答案 7 :(得分:-1)

String text = "It is a string";
System.out.println(text.replaceAll("[a-zA-Z]", "*"));

代码输出为:** ** * ******

请注意,当您想要修改String时,使用StringBuilder会更容易。你需要记住字符串是不可变的。