因为标题表明我有一个功课问题,我无法解决问题。仅使用基本的字符串方法(length,charAt,substring,equals,equalsIgnoreCase)和循环,我必须替换用户输入的字符串中的所有字符实例,并使用用户想要的新字符打印新字符串来代替旧。我不确定如何在不使用indexOf的情况下找到并存储字符串字符的所有实例。这是我编写的一些基本代码,我们将不胜感激。我不知道如何仅使用这些基本的字符串方法替换字符的所有实例。
COMPUTE #hh = NUMBER(CHAR.SUBSTR(Timestamp_1,TS+1,2),F2).
COMPUTE #mm = NUMBER(CHAR.SUBSTR(Timestamp_1,TS+3,2),F2).
COMPUTE #ss = NUMBER(CHAR.SUBSTR(Timestamp_1,TS+6,2),F2).
COMPUTE time = TIME.HMS(#hh,#mm,#ss).
EXECUTE.
FORMATS time (TIME8).
答案 0 :(得分:1)
有几种方法可以做到这一点。您可以将String
转换为characters
- String#toCharArray的数组。然后你需要迭代数组并用新值替换char。
char[] chars = "lorem ipsum sit amet".toCharArray();
char newValue = 'X';
for (int i = 0; i < chars.length; i++) {
if (chars[i] == 'm') {
chars[i] = newValue;
}
}
System.out.println(new String (chars)); // loreX ipsuX sit aXet
您可能希望将StringBuilder
用于类似解决方案:
StringBuilder builder = new StringBuilder("lorem ipsum sit amet");
char newValue = 'X';
for (int i = 0; i < builder.length(); i++) {
if (builder.charAt(i) == 'm') {
builder.setCharAt(i, newValue);
}
}
System.out.println(builder); // loreX ipsuX sit aXet
您甚至可以使用stream
API:
String newString = "lorem ipsum sit amet".chars().map(el -> {
if ((char) el == 'm') {
return 'X';
} else {
return el;
}
}).collect(StringBuilder::new,
StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(newString); // loreX ipsuX sit aXet