Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不使用replace方法的情况下替换用户输入的字符串中的字符?_Java - Fatal编程技术网

Java 如何在不使用replace方法的情况下替换用户输入的字符串中的字符?

Java 如何在不使用replace方法的情况下替换用户输入的字符串中的字符?,java,Java,程序要求用户输入一个短语,然后询问要替换的字符以及替换的内容。我可以使用的唯一字符串方法是length、concat、+、charAt、substring和equals(或equalsIgnoreCase)。 我很迷茫。好吧,假设str是输入的字符串,c是需要替换的字符。这应该是一些有效的代码: for (int i = 0; i < str.length; i++) { if (str.charAt(i) == c) { if (i+1 <= str.length) s

程序要求用户输入一个短语,然后询问要替换的字符以及替换的内容。我可以使用的唯一字符串方法是length、concat、+、charAt、substring和equals(或equalsIgnoreCase)。
我很迷茫。

好吧,假设str是输入的字符串,c是需要替换的字符。这应该是一些有效的代码:

for (int i = 0; i < str.length; i++) {
  if (str.charAt(i) == c) {
    if (i+1 <= str.length) str = str.substring(0, i-1) + str.substring(i+1, str.length);
    if (i+1 > str.length) str = str.substring(0, i-1);
  }
}
for(int i=0;i

您的答案现在保存在str值中。

只需使用
String::charAt
和串联运算符
+

公共静态字符串替换(字符串str、字符old、字符替换){
if(null==str | | str.isEmpty()){
返回str;
}
字符串“”替换;
对于(int i=0,n=str.length();i

更新

下面显示了使用
子字符串
字符
和串联
+
的递归解决方案。如果输入字符串中
字符相对较少,则可以使用较少的连接和创建新字符串实例

publicstaticstringreplace(stringstr、charold、charchange){
if(null==str | | str.isEmpty()){
返回str;
}
int pos=0;
int n=str.length();
而(pos
С您使用StringBuilder吗

String str = "something o";
StringBuilder sb = new StringBuilder(str);
for (int i = 0; i < str.length(); i++) {
  if (str.charAt(i) == 'o') {
    sb.setCharAt(i, '.');
  }
}
System.out.println(sb);
String str=“something o”;
StringBuilder sb=新的StringBuilder(str);
对于(int i=0;i
如何在不使用replace方法的情况下替换用户输入的字符串中的字符

这非常简单,只需在字符处通过子字符串拆分字符串并插入替换项即可。同一字符的上部和下部视为不同的字符

SString test = "s - characters start, within, and end of string - s"; 
test = replace(test, 's','x');
System.out.println(test);
印刷品

x - characterx xtart, within, and end of xtring - x

方法

public static String replace(String s, char target, char replacement) {
     Objects.requireNonNull(s);
     for (int i = 0; i < s.length(); i++) {
         if (s.charAt(i) == target) {
             s = s.substring(0,i) + replacement + s.substring(i+1);
         }
     }
     return s;
}
公共静态字符串替换(字符串s、字符目标、字符替换){
对象。要求不完整;
对于(int i=0;i
以空输出字符串开始。然后逐个字符检查源字符串(使用
length()
charAt()
)。对于每个字符,将字符或其替换项连接到输出字符串。您忘记将替换字符添加到结果中代码将无法编译,因为
string.length()
是一种方法。很遗憾,我不能使用StringBuilder或数组