0

我被要求用星号替换在 JOptionPane 中输入的任何句子中的前 5 个字符。所以我有这个...

import javax.swing.*;
public class Option {
    public static void main (String[] args) {
        String myName;
        myName= JOptionPane.showInputDialog("Input a sentence");
        System.out.println(myName.substring

我只是不知道如何用空格隔离任何句子中的前 5 个字符。对此的任何帮助或提示都会很棒

4

5 回答 5

1

您可以使用正则表达式,如下所示:

myName = myName.replaceFirst(".{5}", "*****");

.{5}是正则表达式,表示五个字符。

编辑:因为您需要区分空格:

String tmp;
int lastCharIndex;
while(int i < 5) {
    if (!Character.isWhiteSpace(string.charAt(i)) {
        tmp += *
        i++;
    } else {
        tmp += " ";
    }
    lastCharIndex++;
}
tmp += myName.substring(lastCharIndex);
于 2013-10-30T19:29:09.470 回答
0

如果您使用循环替换所需的字符,会更加简单快捷。例如:

String input = "Hey how are you";
char[] chars = input.toCharArray();
for (int i = 0, j = 0; i < chars.length && j < 5; i++) {
    char ch = chars[i];
    if (!Character.isWhitespace(ch)) {
        chars[i] = '*';
        j++;
    }
}
String output = new String(chars);
System.out.println(output);

输出:

*** **w are you
于 2013-10-30T19:39:25.127 回答
0
Character.isWhiteSpace()

这是一个很好的使用方法

String s = "Hi I am good";
String newString = "";
int count = 0

int i = 0;
while(count < 5){
    if (!Character.isWhiteSpace(s.charAt(i)) {
        newString += '*';
        count++;
        i++;
    } else {
        newString += string.charAt(i);
        i++;
    }
}

for (int i = count; i < s.length; i++) {
    newString += string.charAt(i);
}

System.out.println(newString);
// ** * ** good
于 2013-10-30T19:37:54.820 回答
0

这个解决方案有点长,但不会用星号替换空格:

import javax.swing.*;
public class Option {
    public static void main (String[] args) {
        String myName;
        myName= JOptionPane.showInputDialog("Input a sentence");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 5; i++) {
            if(myName.charAt(i) != " ") {
                sb.append('*');
            }
            else sb.append(' ');
        }
        System.out.println(sb.toString() + myName.subString(5));
    }
}
于 2013-10-30T19:38:23.807 回答
0

您总是可以实现一个简单的 for 循环,其中包含如下条件:

int charCount = 0;
for(int i = 0; i < myName.length(); i++){
          if(myName.charAt(i) != ' '){
               myName = '*" + myName.subString(i);
               charCount++;
          }
          if(charCount == 5)
               break;
}
于 2013-10-30T19:46:18.730 回答