File1: StringRoutines.java
-----------------------------------------------------------------------------------
package org.developersbrain.solutions;
public class StringRoutines {
/*Find and replace a sequence of characters*/
int getArrayLength(char[] arrList){
return arrList.length;
}
char[] replace(char[] arrList,int startPos,int endPos,char[] findChar,char[] repChar){
int findLength=getArrayLength(findChar);
int repLength=getArrayLength(repChar);
char[] chrRep = null;
if(findLength==repLength){
for(int i=startPos,k=0;i<endPos;i++,k++)
arrList[i]=repChar[k];
}else if(repLength>findLength){
int diff=(repLength-findLength);
int arrLength=getArrayLength(arrList);
chrRep=new char[arrLength+diff];
int i,j;
for(i=0,j=0;i<arrLength;j++,i++){
chrRep[j]=arrList[i];
if(j==startPos){
for(int k=0;k<repLength;k++,j++){
chrRep[j]=repChar[k];
}
j--;
i=(j-diff);
}
}
}else{
int diff=(findLength-repLength);
int arrLength=getArrayLength(arrList);
chrRep=new char[arrLength-diff];
int i,j;
for(i=0,j=0;i<arrLength;j++,i++){
chrRep[j]=arrList[i];
if(j==startPos){
for(int k=0;k<repLength;k++,j++){
chrRep[j]=repChar[k];
}
j--;
i=j+1;
}
}
}
if(chrRep==null) return arrList;
else return chrRep;
}
char[] replace(char[] arrList,char[] findChar,char[] repChar){
int arrLength = getArrayLength(arrList);
int findCharLength=getArrayLength(findChar);
int repCharLength=getArrayLength(repChar);
int i,j,k;
for(i=0;i<arrLength;i++){
for(j=i,k=0;k<findCharLength;j++,k++){
if(arrList[j]!=findChar[k]) break;
}
if(findCharLength==k){
arrList=replace(arrList,i,j,findChar,repChar);
if(findCharLength<repCharLength){
arrLength=arrLength+(repCharLength-findCharLength);
}else if(findCharLength>repCharLength){
arrLength=arrLength-(findCharLength-repCharLength);
//i=i-(findCharLength-repCharLength);
}
}
}
return arrList;
}
String convertArrString(char[] arrList){
int arrLength = getArrayLength(arrList);
String retString="";
for(int i=0;i<arrLength;i++){
retString=retString+arrList[i];
}
return retString;
}
public String replace(String inputString,String findStr,String replaceStr){
char[] arrList=inputString.toCharArray();
char[] findChar=findStr.toCharArray();
char[] repChar=replaceStr.toCharArray();
if(findChar.length==0 || repChar.length==0){
return inputString;
}else{
char[] outArr=replace(arrList,findChar,repChar);
return convertArrString(outArr);
}
}
}
-----------------------------------------------------------------------------------
package org.developersbrain.solutions;
public class StringRoutines {
/*Find and replace a sequence of characters*/
int getArrayLength(char[] arrList){
return arrList.length;
}
char[] replace(char[] arrList,int startPos,int endPos,char[] findChar,char[] repChar){
int findLength=getArrayLength(findChar);
int repLength=getArrayLength(repChar);
char[] chrRep = null;
if(findLength==repLength){
for(int i=startPos,k=0;i<endPos;i++,k++)
arrList[i]=repChar[k];
}else if(repLength>findLength){
int diff=(repLength-findLength);
int arrLength=getArrayLength(arrList);
chrRep=new char[arrLength+diff];
int i,j;
for(i=0,j=0;i<arrLength;j++,i++){
chrRep[j]=arrList[i];
if(j==startPos){
for(int k=0;k<repLength;k++,j++){
chrRep[j]=repChar[k];
}
j--;
i=(j-diff);
}
}
}else{
int diff=(findLength-repLength);
int arrLength=getArrayLength(arrList);
chrRep=new char[arrLength-diff];
int i,j;
for(i=0,j=0;i<arrLength;j++,i++){
chrRep[j]=arrList[i];
if(j==startPos){
for(int k=0;k<repLength;k++,j++){
chrRep[j]=repChar[k];
}
j--;
i=j+1;
}
}
}
if(chrRep==null) return arrList;
else return chrRep;
}
char[] replace(char[] arrList,char[] findChar,char[] repChar){
int arrLength = getArrayLength(arrList);
int findCharLength=getArrayLength(findChar);
int repCharLength=getArrayLength(repChar);
int i,j,k;
for(i=0;i<arrLength;i++){
for(j=i,k=0;k<findCharLength;j++,k++){
if(arrList[j]!=findChar[k]) break;
}
if(findCharLength==k){
arrList=replace(arrList,i,j,findChar,repChar);
if(findCharLength<repCharLength){
arrLength=arrLength+(repCharLength-findCharLength);
}else if(findCharLength>repCharLength){
arrLength=arrLength-(findCharLength-repCharLength);
//i=i-(findCharLength-repCharLength);
}
}
}
return arrList;
}
String convertArrString(char[] arrList){
int arrLength = getArrayLength(arrList);
String retString="";
for(int i=0;i<arrLength;i++){
retString=retString+arrList[i];
}
return retString;
}
public String replace(String inputString,String findStr,String replaceStr){
char[] arrList=inputString.toCharArray();
char[] findChar=findStr.toCharArray();
char[] repChar=replaceStr.toCharArray();
if(findChar.length==0 || repChar.length==0){
return inputString;
}else{
char[] outArr=replace(arrList,findChar,repChar);
return convertArrString(outArr);
}
}
}
File2: MainClass.java
---------------------------------------------------------------------
package org.developersbrain.solutions;
public class MainClass {
public static void main(String[] args){
StringRoutines sr=new StringRoutines();
String str="Hey find and replace me.find find find .find";
String findStr=" ";
String repStr="%20";
System.out.println("Case 1:");
System.out.println("Given String:"+str);
System.out.println("Find text:"+findStr);
System.out.println("Replace with:"+repStr);
str=sr.replace(str, findStr, repStr);
System.out.println("Modified String: "+str);
System.out.println();
str="Hey find and replace me.find find find .find";
findStr="find";
repStr="FIND";
System.out.println("Case 2:");
System.out.println("Given String:"+str);
System.out.println("Find text:"+findStr);
System.out.println("Replace with:"+repStr);
str=sr.replace(str, findStr, repStr);
System.out.println("Modified String: "+str);
System.out.println();
str="Hey find and replace me.find find find .find";
findStr="find";
repStr="you YOU";
System.out.println("Case 3:");
System.out.println("Given String:"+str);
System.out.println("Find text:"+findStr);
System.out.println("Replace with:"+repStr);
str=sr.replace(str, findStr, repStr);
System.out.println("Modified String: "+str);
}
}
Output:
---------------------------------------------------------------------------------
Case 1:
Given String:Hey find and replace me.find find find .find
Find text: " " ---Space Character
Replace with:%20
Modified String: Hey%20find%20and%20replace%20me.find%20find%20find%20%20%20%20%20.find
Case 2:
Given String:Hey find and replace me.find find find .find
Find text:find
Replace with:FIND
Modified String: Hey FIND and replace me.FIND FIND FIND .FIND
Case 3:
Given String:Hey find and replace me.find find find .find
Find text:find
Replace with:you YOU
Modified String: Hey you YOU and replace me.you YOU you YOU you YOU .you YOU
Comments
Post a Comment