Как заменить строку на набор из одного символа - PullRequest
0 голосов
/ 10 декабря 2018

Как заменить введенное слово строки на набор из одного символа: Например:

Строка: Hello Word Выходные данные должны быть: aaaaa aaaa

Theпробел должен оставаться пробелом.

Я пробовал это, но пробела нет.

Scanner input = new Scanner(System.in);
String word =  input.nextLine();

for(int i = 0; i < word.length(); i++){                 
    System.out.print("a");
}

Ответы [ 10 ]

0 голосов
/ 10 декабря 2018

Попробуйте это:

for(int i = 0; i < word.length(); i++) {
    if(word.charAt(i) != ' ') {
        System.out.print("a");
    }
    System.out.print(" ");
}
0 голосов
/ 10 декабря 2018

Мы должны использовать кодовые точки, а не символы.

System.out.println(
        "Hello, world!".codePoints()
        .mapToObj(Character::isWhiteSpace)
        .map(Map.of(true, " ", false, "a")::get)  // yeah I know, but just to be goofy
        .collect(Collectors.joining()));
0 голосов
/ 10 декабря 2018

Попробуйте этот код:

Scanner input=new Scanner(System.in);
String word=input.nextLine();
String x[] =word.split(" ");
int count=x.length;

for(int i=0;i<count;i++){
    for(int j=0;j<=x[i].length();j++){
       if(j==x[i].length()){
           System.out.print(" ");
       }else{
           System.out.print("a");
       }
    }
}
0 голосов
/ 10 декабря 2018

Кроме того, вы можете выполнить итерацию word.toCharArray() следующим образом:

public static void main(String[] args) {
    String word = "Hello World!";
    String replacedWord = "";

    for (char c : word.toCharArray()) {
        if (c != ' ') {
            replacedWord += 'a';
        } else {
            replacedWord += c;
        }
    }

    System.out.println(word + " --> " + replacedWord);
}
0 голосов
/ 10 декабря 2018

Итак, почему бы не добавить решение, использующее лямбды

public String goofy(String str) {
    return Stream.of(str.split("")).map(ch -> {
            if (ch.equals(" "))
                return " ";
            else
                return "a";
}).collect(Collectors.joining(""));
}

Кстати, наиболее практичное решение - это то, что @Reimeus ожидало меня.

0 голосов
/ 10 декабря 2018

Итерируйте каждый символ в word, если это пробел, напечатайте его без изменений.В противном случае выведите a.Мол,

for (char ch : word.toCharArray()) {
    if (Character.isWhitespace(ch)) {
        System.out.print(ch);
    } else {
        System.out.print('a');
    }
}
0 голосов
/ 10 декабря 2018

Этот метод заменит любую строку на любой символ, который вы хотите, кроме пробелов.

    public static void main(String []args) {
        String t = "Hello Word";
        replace(t, 'a');
    }

    public static void replace(String word, char wanted) {
        for (int i = 0; i < word.length(); i++){
            System.out.print((word.charAt(i) == ' ' ? " " : wanted));
        }
    }
0 голосов
/ 10 декабря 2018

Вы можете сделать что-то вроде этого:

for(int i = 0; i < word.length(); i++){
   System.out.print(word.charAt(i) == ' ' ? ' ' : 'a');
}

или, если вам нужен результат после цикла, вы можете использовать StringBuilder в качестве аккумулятора и затем напечатать.

StringBuilder builder = new StringBuilder();
for(int i = 0; i < word.length(); i++){
    builder.append(word.charAt(i) == ' ' ? ' ' : 'a'); // accumulate to builder
}
System.out.println(builder);

или вы можете пойти по пути Java-8:

System.out.println(word.chars()
            .mapToObj(c -> ((char)c) == ' ' ? " " : "a")
            .collect(joining()));
0 голосов
/ 10 декабря 2018

Возможно

System.out.println("Hello Word".replaceAll("\\S", "a"));
0 голосов
/ 10 декабря 2018
Scanner input = new Scanner(System.in);
String word =  input.nextLine();

for(int i = 0; i < word.length(); i++){ 
    if(word.charAt(i) == ' '){
        System.out.print(" ");
    }
    else{
        System.out.print("a");
    }
}

По сути, вы хотите пропустить System.out.print ("a") всякий раз, когда встречаете пробел.

...