喜欢String str="ahibhitc";
作为输入,输出就像1告诉字符串中出现的时间hi,abhitc从字符串中删除hi但不包括命中,最后abyebhitc用再见取代所有hi但排除所有在字符串中点击关键字。我试图能够计算出现的喜好,但是因为击中也无法取代喜欢再见。所有我知道的字符串都是不可变的,所以将结果存储在新的字符串中。
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
String str="ahibhitc";
// str=scn.nextLine();
StringBuilder str1= new StringBuilder(str);
//System.out.println(str1);
int count=0;
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)=='h'){
if(str.charAt(i+1)=='i'&& str.charAt(i+2)!='t')
{
count++;
}
}
}
System.out.println(count);
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)=='h'){
if(str.charAt(i+1)=='i'&& str.charAt(i+2)!='t')
{
str1.delete(i, i+2);
//str1.replace(i, i+2, "");
}
}
}
System.out.println(str1);
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)=='h'){
if(str.charAt(i+1)=='i'&& str.charAt(i+2)!='t')
{
str1.replace(i, i+2, "bye");
}
}
}
System.out.println(str1);
}
}
答案 0 :(得分:3)
这对你有用:
public static void main(String[] args) {
String str="ahibhitc";
System.out.println(str.replaceAll("hi(?!t)", "bye")); // Negative lookahead for "t" after "hi"
}
O / P:
abyebhitc
使用?i
限定符使正则表达式不区分大小写。
答案 1 :(得分:1)
完成此操作的最简单方法是首先,用一些占位符字符串(例如“%”)替换所有“hit”的字符串实例(确保这不会出现在@GhostCat所说的输入字符串中)。然后,用“bye”替换所有“hi”字符串。然后用“hit”替换占位符字符串(“%”)。
示例:
String str="ahibhitc";
String intermediateString = str.replace("hit","%");
String result = intermediateString.replace("hi","bye").replace("%","hit");
System.out.println(result);