Java中在外部字符串中减去内部字符串

Java中在外部字符串中减去内部字符串,java,string,Java,String,我想知道是否有任何方法可以根据用户的选择减去Java中另一个字符串中包含的字符串 这是我的代码: removeIng = pH1 + pH2 + pH3; System.out.print("Enter number corresponding to element you want to remove"); System.out.printf("%s",removeIng); remove = in.nextInt(); switch(remove) { case 1:

我想知道是否有任何方法可以根据用户的选择减去Java中另一个字符串中包含的字符串

这是我的代码:

removeIng = pH1 + pH2 + pH3;  
System.out.print("Enter number corresponding to element you want to remove");  
System.out.printf("%s",removeIng);  
remove = in.nextInt();  
switch(remove)  
{  
case 1:  
    removeIng = pH2 + pH3;  
case 2:  
    removeIng = pH1 + pH3;  
case 3:  
    removeIng = pH1 + pH2;  
}  
我需要的代码是动态的,以便用户可以删除所有的元素,如果他们想要的话。我已经创建了一个外部循环来考虑这种可能性。但是我不知道如何让“removeIng”减去用户选择的元素。我能猜出另一部分。任何帮助都将不胜感激。我找到了减去声明为“废话废话”的字符串的方法,但不是这样的。希望这是有道理的


谢谢。

尝试
String.replace(CharSequence目标,CharSequence替换)
()。如果需要更强大的替换语法,还可以使用正则表达式。

尝试
String.replace(CharSequence目标,CharSequence替换)
()。如果您需要更强大的替换语法,还可以使用正则表达式。

根据示例代码,跟踪用户不需要的字符串位,并基于此生成
删除
。这里有一些伪代码。为了清晰起见,我牺牲了优化:

String[] components;
// what used to be called pH1 is accessed by components[0];
boolean[] deletedPieces;
// initially set to all false
// contains true for segments that the user wants to delete, false otherwise

your outer loop here {
    // ask the user which piece to delete here
    remove = in.nextInt() - 1; // - 1 to account for array indices starting at 0

    deletedPieces[remove] = true;

    StringBuilder sb = new StringBuilder();

    for(int i = 0; i < total number of possible pieces; i++) {
        if(deletedPieces[i])
            // user wanted this piece deleted; do nothing
        else
            sb.append(components[i]);
    }

    removeIng = sb.toString();
}
String[]组件;
//以前称为pH1的内容由组件[0]访问;
布尔[]删除数据块;
//最初设置为“全部为false”
//包含用户要删除的段的true,否则为false
你的外环在这里{
//在此处询问用户要删除的内容
remove=in.nextInt()-1;//-1以说明从0开始的数组索引
deletedPieces[删除]=真;
StringBuilder sb=新的StringBuilder();
对于(int i=0;i<可能的总件数;i++){
如果(删除文件[i])
//用户希望删除此片段;不执行任何操作
其他的
sb.附加(成分[i]);
}
删除=某人的字符串();
}

基于示例代码,跟踪用户不需要的字符串位,并基于此生成
removing
可能更容易。这里有一些伪代码。为了清晰起见,我牺牲了优化:

String[] components;
// what used to be called pH1 is accessed by components[0];
boolean[] deletedPieces;
// initially set to all false
// contains true for segments that the user wants to delete, false otherwise

your outer loop here {
    // ask the user which piece to delete here
    remove = in.nextInt() - 1; // - 1 to account for array indices starting at 0

    deletedPieces[remove] = true;

    StringBuilder sb = new StringBuilder();

    for(int i = 0; i < total number of possible pieces; i++) {
        if(deletedPieces[i])
            // user wanted this piece deleted; do nothing
        else
            sb.append(components[i]);
    }

    removeIng = sb.toString();
}
String[]组件;
//以前称为pH1的内容由组件[0]访问;
布尔[]删除数据块;
//最初设置为“全部为false”
//包含用户要删除的段的true,否则为false
你的外环在这里{
//在此处询问用户要删除的内容
remove=in.nextInt()-1;//-1以说明从0开始的数组索引
deletedPieces[删除]=真;
StringBuilder sb=新的StringBuilder();
对于(int i=0;i<可能的总件数;i++){
如果(删除文件[i])
//用户希望删除此片段;不执行任何操作
其他的
sb.附加(成分[i]);
}
删除=某人的字符串();
}


您意识到字符串在Java中是不可变的,是吗?你可以创建一个新的字符串,但永远不要改变它的内容。我不知道。非常感谢。我想我需要创建新字符串。@Brian根据下面的评论他不知道这一点。你知道字符串在Java中是不可变的,是吗?你可以创建一个新的字符串,但永远不要改变它的内容。我不知道。非常感谢。我想我需要创建新字符串。@Brian根据下面的评论,他不知道这一点。如果字符串的某些部分相互重叠,例如pH1是a,pH2是ab,pH3是abc,并且用户删除了1,这将不起作用。更改嵌套字符串的名称会更容易吗?sk,那么是否可以在上面的示例中添加这段代码来代替“removeIng=pH2+pH3”:对不起,太早按enter键。。。“replace=String.replace(pH1,”)”要在“pH1”@Michael中插入任何内容,您的一个字符串是否可能是其他字符串的子集?甚至连其他字符串的连接都不行?如果字符串的某些部分相互重叠,例如pH1是a,pH2是ab,pH3是abc,并且用户删除了1。那么更改嵌套字符串的名称会更容易吗?sk,那么是否可以添加这段代码来代替“removeIng=pH2+pH3”在上面的例子中:对不起,太早按回车键。。。“replace=String.replace(pH1,”)”要在“pH1”@Michael中插入任何内容,您的一个字符串是否可能是其他字符串的子集?或者甚至是其他字符串的串联?托加默斯勋爵,我对数组还不熟悉。我们将在下周的课堂上学习。到目前为止,我对数组的唯一了解是,要创建一个整数数组,我将使用int[]。我正在Oracle的网站上查看arraylist,我不太明白如何初始化arraylist。。。“公共静态数组列表”?顺便说一句,谢谢你的帮助。我想如果我能弄明白这一点,上面的代码就可以用了。@Michael,因为它只是伪代码,所以我修改了它,使用数组而不是ArrayList。这样更清楚吗?谢谢,这很有帮助。如果你不介意的话,还有一个问题。在我为“String”创建的数组中,我在哪里声明pH1和pH2,等等。?或者我甚至需要这样做?我了解组件[0]的工作原理,所以这不是问题。@Michael,您不再需要pH1了。在过去使用pH1的地方,只需使用组件[0];无论您在哪里使用pH2,都要使用更合理的组件[1]等。非常感谢。代码中引用的字符串[]是新字符串还是删除字符串?我想我不太确定如何初始化字符串。。。“公共静态字符串[]”?或公共静态字符串删除[]?对不起,我可能听起来很笨拙。。。我可能是……:)托加默斯勋爵,我对阵列还不熟悉。我们将在下周的课堂上学习。到目前为止,我对数组的唯一了解是,要创建一个整数数组,我将使用int[]。我在找你