Я пишу программу, которая берет данные из строк в текстовом файле.проблема в том, что это не самый лучший текстовый файл, и возникает большая путаница при попытке написать синтаксический анализатор для файла
Вот две такие строки, для обеих я могу получить переменные адреса, широты и долготы, нона втором я не могу получить цену или размер (ы).ошибка, которую я продолжаю получать, это исключение строки за пределами -41 (серьезно)
|12091805|,|0|,|DETAILS|,||,||,|Latitude:54.593406, Longitude:-5.934344 <b >Unit 8 Great Northern Mall Great Victoria Street Belfast Down<//b><p><p><p>Price : 150,000<p>Size: 2,411 Sq Feet ()<p>Rent : 50,500 Per Annum<p><p>Text<p><p>|,||,||
|15961081|,|0|,|DETAILS|,||,||,|<p>Latitude:54.593406, Longitude:-5.934344 <b>3-5 Market Street Lurgan BT66</b> </p> <p> </p> <p> </p> <p> Price : £250,000 </p> <p> Size: 0.173 acres (0.07ha) </p> <p> </p> <p> Text </p> <p> </p> <p> Text </p> <p> </p> <p> Text </p> <p> </p> <p> </p>|,||,||
Это намного дольше, но я изменил абзацы, чтобы сказать текст на данный момент.
Инет, я не могу переписать текстовый файлЛюбые указатели будут оценены
if (s.contains("Price"))
{
int pstart = 0;
int pend = 0;
if (s.contains("<p>Size"))
{
//if has pound symbol
if (s.contains("£"))
{
String[] str = s.split("£");
StringBuilder bs = new StringBuilder();
for (String st : str)
{
bs.append(st);
}
pstart = bs.indexOf("Price") + 8;
pend = bs.indexOf("</p>") - 1;
}
else
{
pstart = s.indexOf("Price") + 8;
pend = s.indexOf("<p>Size");
}
String sp = s.substring(pstart, pend);
String[] spl = sp.split(",");
StringBuilder build = new StringBuilder();
for (String st : spl)
{
build.append(st);
f = build.toString();
}
in = Integer.parseInt(f);
p.setPrice(in);
}
else
{
if (s.contains("£"))
{
String[] str = s.split("£");
StringBuilder bs = new StringBuilder();
for (String st : str)
{
bs.append(st);
}
pstart = bs.indexOf("Price : ");
pend = bs.indexOf("</p>") - 1;
}
else
{
pstart = s.indexOf("Price") + 8;
pend = s.indexOf("<p>Size");
}
String sp = s.substring(pstart, pend);
String[] spl = sp.split(",");
StringBuilder build = new StringBuilder();
for (String st : spl)
{
build.append(st);
f = build.toString();
}
in = Integer.parseInt(f);
p.setPrice(in);
}
}
// if has size property
if (s.contains("Size"))
{
//if in acres
if (s.contains("acres"))
{
int sstart = s.indexOf("Size:") + 6;
int send = s.indexOf("acres") - 1;
String sp = s.substring(sstart, send);
double d = Double.parseDouble(sp);
p.setSized(d);
}
if (s.contains("()"))
{
int sstart = s.indexOf("Size:") + 6;
int send = s.indexOf("Sq") - 2;
String sp = s.substring(sstart, send);
if (sp.contains("-") && sp.contains(","))
{
String[] spl = sp.split("-|,");
StringBuilder str = new StringBuilder();
str.append(spl[0] + spl[1]);
StringBuilder str2 = new StringBuilder(0);
str2.append(spl[2] + spl[3]);
String s1 = str.toString();
int i = Integer.parseInt(s1);
p.setSize(i);
String s2 = str2.toString();
i = Integer.parseInt(s2);
p.setSize2(i);
}
if (sp.contains("-"))
{
String[] spl = sp.split("-");
int one = Integer.parseInt(spl[0]);
p.setSize(one);
int two = Integer.parseInt(spl[1]);
p.setSize2(two);
}
else if (!(sp.contains("-")))
{
if (sp.contains(","))
{
String[] spl = sp.split(",");
StringBuilder build = new StringBuilder();
for (String st : spl)
{
build.append(st);
f = build.toString();
}
in = Integer.parseInt(f);
p.setSize(in);
}
else
{
p.setSize(Integer.parseInt(sp));
}
}
}
}
v.add(p);
p = new Property();