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