用*替换前5个非空格字符

时间:2013-10-30 19:14:43

标签: java substring joptionpane

我被要求用星号替换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个字符。对此有任何帮助或提示都很棒

5 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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

答案 2 :(得分: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));
    }
}

答案 3 :(得分:0)

如果使用循环替换所需的字符,则更多简单快速。 e.g:

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

答案 4 :(得分: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;
}