public ConvertedRow
removeOrConvertChars(String tmp, String [] arrSearch,
String [] arrReplace, boolean bRegexReplace,
CharArea [] arrExcludeAreas)
{
StringBuffer sb = new StringBuffer();
String strSearch, strReplace;
int max_search = arrSearch.length;
int max_replace = arrReplace.length;
int max = tmp.length();
byte [] arrByteChangedChars = new byte[max];
for(int i = 0; i < max; i++)
{
arrByteChangedChars[i] = 0;
}
// String inputString = new String(tmp);
char chCurrent = 0;
char chReplace = 0;
int ichCurrent;
boolean bCharFounded = false;
for(int k = 0 ; k < max; k++ )
{
chCurrent = tmp.charAt(k);
ichCurrent = chCurrent;
chReplace = chCurrent;
bCharFounded = false;
strReplace = null;
for(int i = 0 ; i < max_search; i++ )
{
strSearch = arrSearch[i];
if (strSearch == null)
continue;
if (strSearch.toString().trim().length() == 0)
{
//System.out.println("if (token.trim().length() == 0)");
continue;
}
strReplace = arrReplace[i];
/*
if (tmp.contains(strMuutettava))
{
int ind = tmp.indexOf(strMuutettava);
//System.out.println(strMuutettava +"='" + strMuutettava +" " +ind);
}
*/
if (strReplace == null)
strReplace = ""; // tmp = tmp.replaceAll(strSearch, "");
char chSearch = 0; // testi koodia:
if (strSearch.length()>0)
chSearch = strSearch.charAt(0);
int iSearch = chSearch;
char chReplaceNewValue = 0;
if (strReplace.length()>0)
chReplaceNewValue = strReplace.charAt(0);
int iReplaceNewValue = chReplaceNewValue; // testikoodia loppu
// regex-muutos kutsu: jos regexin erikoismerkkejä hakuarvoissa,
// ne pitää koodata hakuarvoihin erikseen!!! Huom! Erotin merkkeinä \\\\
// eli kääntäjä muuttaa sen ajossa \\ merkkeiksi.
//if (bRegexReplace)
//tmp = tmp.replaceAll(strMuutettava, strkorvattava);
//else
//tmp = replaceAll(tmp, strMuutettava, strkorvattava);
if (chCurrent == chSearch)
{
chReplace = chReplaceNewValue;
bCharFounded = true;
break;
}
}
//if (chReplace == chCurrent || chReplace != 0)
if (!bCharFounded)
sb.append(chCurrent);
else
if (strReplace != null)
sb.append(strReplace);
if (bCharFounded && (strReplace != null
&& !strReplace.equals("" +chCurrent))
|| strReplace == null /* chReplace != chCurrent */ )
arrByteChangedChars[k] = 1;
}
/* Vanhaa koodia; ei toimi, koska StringTokenizer ei selviydy jakamisesta
* oikein esim: \\\\ , vaan ohittaa kyseisen kohdan siististi päätyen \\\\
* kohdan jälkeiseen taulukon alkioon.
StringTokenizer tokenMuutettavat = new StringTokenizer(muutettavatMerkit, haeMerkkeja);
StringTokenizer tokenkorvattavat = new StringTokenizer(korvattavatMerkit, haeMerkkeja);
*/
//System.out.println("d:removeDupleSpace 4 tmp='" +tmp +"'");
/*
int maxEA = arrExcludeAreas.length;
int ind, chEnd;
CharArea ca;
int max = tmp.length();
byte [] arrByteChangedChars = new byte[max];
for(int i = 0; i < max; i++)
{
arrByteChangedChars[i] = 0;
}
for(int i = 0; i < maxEA; i++)
{
ca = arrExcludeAreas[i];
if (ca == null)
continue;
chEnd = ca.getChEndChar();
for (int j = ca.getChStartChar(); j < chEnd; j++)
{
if (isCharIn((char)j, arrMuutettavat))
continue;
ind = tmp.indexOf("" + j);
if (ind == -1)
continue;
arrByteChangedChars[i] = 1; // wrong none-changed excluded char founded
}
}
*/
return new ConvertedRow(tmp, sb.toString(), arrByteChangedChars);
// return tmp;
}