如何操作给定索引中的字符串?JAVA

如何操作给定索引中的字符串?JAVA,java,Java,您好,所以我尝试用相应的罗马数字替换字符串中的数字,该方法应该只处理给定startPos和endPos之间的字符串 例如,如果字符串为: “H3ll0,wh4t 15 ar3您所做的一切”和startPos=1,endPos=14 它应该打印出来:“HIIIll0,您在做什么?” 以下是我的方法: public void convertToRoman(int startPos, int endPos){ for (int i = startPos-1; i < endPo

您好,所以我尝试用相应的罗马数字替换字符串中的数字,该方法应该只处理给定startPos和endPos之间的字符串

例如,如果字符串为: “H3ll0,wh4t 15 ar3您所做的一切”和startPos=1,endPos=14

它应该打印出来:“HIIIll0,您在做什么?”

以下是我的方法:

 public void convertToRoman(int startPos, int endPos){   

    for (int i = startPos-1; i < endPos; i++) {
        if (romanNum.contains("1")) {
            romanNum = romanNum.replace("1", "I");
        }
        if (romanNum.contains("2")) {
            romanNum = romanNum.replace("2", "II");
        }
        if (romanNum.contains("3")) {
            romanNum = romanNum.replace("3", "III");
        }
        if (romanNum.contains("4")) {
            romanNum = romanNum.replace("4", "IV");
        }
        if (romanNum.contains("5")) {
            romanNum = romanNum.replace("5", "V");
        }
        if (romanNum.contains("6")) {
            romanNum = romanNum.replace("6", "VI");
        }
        if (romanNum.contains("7")) {
            romanNum = romanNum.replace("7", "VII");
        }
        if (romanNum.contains("8")) {
            romanNum = romanNum.replace("8", "VIII");
        }
        if (romanNum.contains("9")) {
            romanNum = romanNum.replace("9", "IX");
        }
    }

    System.out.print(romanNum);

    }
publicsvoidconvertoroman(intstartpos,intendpos){
对于(int i=startPos-1;i

***顺便说一句,现在不管给定的索引是什么,它都在操作整个字符串。下一种方法很好

char[]chars=romanum.tocharray();
字符串s=“”;
对于(int i=startPos-1;i
你可以在那里做

String a = "H3ll0, wh4t 15 ar3 you do1n9";
int startPos = 1;
int endPos = 14;
String beginSubstring = a.substring(0,startPos);
String substring = a.substring(startPos, endPos);
String lastSubstring = a.substring(endPos);

String resultOperation =operation(substring);
String result = beginSubstring+resultOperation+lastSubstring;

String.replace
替换找到的匹配项的第一个实例,它没有任何用于替换的索引边界。相反,您应该循环遍历字符串中的各个字符,如果它们与替换匹配,则一次替换一个字符

Map replacements=newhashmap();
替换。放置('1','I');
替换。将('2','II');
替换。将('3','III');
//等
StringBuilder sb=新的StringBuilder(romanum.length());
如果(startPos>0){
sb.append(romanNum,0,startPos);
}

for(int i=startPos;i但是'II'不是char though..我修复了它。这也不会返回整个字符串