是java有任何选项,例如从第1次和最后一次出现的字符串中删除所有出现的子字符串,例如
String sdata =“vijay已经10岁了.vijay正在五年级学习.vijay在体育方面非常出色。像板球一样,vijay”
我需要一个输出,比如“vijay已经10岁了。正在五年级学习。在体育方面非常出色。像板球一样很棒”
这意味着删除vijay的第二次和第三次出现。 java有没有内置函数?
答案 0 :(得分:2)
这是一个非常具体的要求,所以答案是:不,Java没有任何标准功能。
我的建议:使用indexOf
和lastIndexOf
找到第一次和最后一次出现,拆分字符串,使用replaceAll
去除中间部分的所有出现,并连接一切都在一起。
如果您无法自行解决此问题,请使用您的代码和特定问题/问题更新问题。
答案 1 :(得分:0)
不,不。 你可以尝试这样的事情:
String s = "vijay is 10 yr old. vijay is studying in 5th grade. vijay is excellent in sports.vijay like cricket";
String token = "vijay";
StringTokenizer st = new StringTokenizer(s,token);
int count = 0;
while ( st.hasMoreElements() )
{
String temp = st.nextToken();
if(count == 0 || count == (st.countTokens() - 1)
{
//your code
}else{
//your code
}
count ++;
}
答案 2 :(得分:0)
正如Jan所说,特定的事情是安静的。有很多Java方法和库,但不是那么具体。所以我给你做了一个示例答案,通过遍历数组来展示你如何解决这个问题,它就是这样做的。
删除所有剩余的特殊字符。
private void start(){
String origanlString = "vijay is 10 yr old. vijay is studying in 5th grade. vijay is excellent in sports. vijay like cricket.";
String toFind = "vijay";
char deliminator = 'X'; // '\u0000'
char[] orig = origanlString.toCharArray();
char[] find = toFind.toCharArray();
System.out.println("orig length:"+orig.length);
System.out.println("find length:"+find.length+"\n");
System.out.println("[0] ***"+String.valueOf(orig)+"***("+orig.length+")chars");
// 1. Iterate over the array to be searched
for(int i=0;i<orig.length;i++){
// If letter found equals the first letter of the toFind array, then check the rest of the characters
Boolean matchFound = true;
if(find[0]==orig[i]){
wordCheckLoop:
for(int x=0;x<find.length;x++){
if(orig[i+x]!=find[x]){
matchFound = false;
break wordCheckLoop;
}
}
// Replace found string with place holders
if(matchFound){
for(int x=0;x<find.length;x++){
orig[i+x] = deliminator;
}
}
}
}
System.out.println("[1] ***"+String.valueOf(orig)+"***("+orig.length+")chars");
// 2. Replace the first occurance
int count = 0;
Boolean firstInst = true;
replaceFirst:
for(int i=0;i<orig.length;i++){
try{
if(orig[i]==deliminator&&firstInst){
orig[i]=find[count++];
if(orig[i+1]!=deliminator){
firstInst = false;
}
}
}catch(ArrayIndexOutOfBoundsException ex){
break replaceFirst;
}
}
System.out.println("[2] ***"+String.valueOf(orig)+"***("+orig.length+")chars");
// 3. Replace the last occurance
firstInst = true;
count = find.length-1;
replaceLast:
for(int i=orig.length-1;i>0;i--){
try{
if(orig[i]==deliminator&&firstInst){
orig[i]=find[count--];
if(orig[i-1]!=deliminator){
firstInst=false;
}
}
}catch(ArrayIndexOutOfBoundsException ex){
System.out.println("ArrayIndexOutOfBoundsException");
break replaceLast;
}
}
System.out.println("[3] ***"+String.valueOf(orig)+"***("+orig.length+")chars");
// 4. Remove all remaining occurances of special charactor
count = 0;
for(int i=0;i<orig.length;i++){
if(orig[i]==deliminator){
count++;
}
}
char[] tempArray = new char[orig.length-count];
count = 0;
for(int i=0;i<orig.length;i++){
if(orig[i]!=deliminator){
tempArray[count++] = orig[i];
}
}
System.out.println("[4] ***"+String.valueOf(tempArray)+"***("+tempArray.length+")chars");
}