这里是方法:
public static String normalizza(String x) {
for (int i = x.length(); i > 0; i--) {
if (x.substring(i, x.length()).equalsIgnoreCase(" ")) {
x = x.substring(0, i);
}
}
return x;
}
我应该从随机访问文件中读取一个字符串,并消除空格以找到对象位置
这些是该类的属性:
public class Iscritto {
private int id;
private String nome;
private String cognome;
private String dataNascita;
这是属性" nome"的搜索方法。 (方法" normalizza"适用于此方法):
private static void cercaNome() {
Iscritto a = new Iscritto();
try {
File file = new File("C:\\temp\\iscritti.dat");
RandomAccessFile ra = new RandomAccessFile(file, "r");
String nome = JOptionPane.showInputDialog("Inserisci nome da cercare:");
ra.seek(0);
a.leggi(ra);
String nomeControllato = a.getNome();
nomeControllato = normalizza(nomeControllato);
int conta = 0;
if (nomeControllato.equalsIgnoreCase(nome)) {
int b = (int) ra.getFilePointer() - 2;
int position = b / 153;
ra.seek(position * 153);
a.leggi(ra);
System.out.println("iscritto: " + a);
} else {
while (!nomeControllato.equalsIgnoreCase(nome)) {
conta++;
ra.seek(conta * 153);
a.leggi(ra);
nomeControllato = a.getNome();
nomeControllato = normalizza(nomeControllato);
if (nomeControllato.equalsIgnoreCase(nome)) {
int b = (int) ra.getFilePointer() - 2;
int position = b / 153;
ra.seek(position * 153);
a.leggi(ra);
System.out.println("iscritto: " + a);
}
}
}
ra.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
这是属性"数据"的搜索方法。 (normalizza不适合这个):
private static void cercaData() {
Iscritto a = new Iscritto();
try {
File file = new File("C:\\temp\\iscritti.dat");
RandomAccessFile ra = new RandomAccessFile(file, "r");
String data = JOptionPane.showInputDialog("Inserisci data da cercare (example : 12-MAG-2018):");
ra.seek(0);
a.leggi(ra);
String dataControllata = a.getDataNascita();
dataControllata = normalizza(dataControllata);
int conta = 0;
if (dataControllata.equalsIgnoreCase(data)) {
int b = (int) ra.getFilePointer() - 2;
int position = b / 153;
ra.seek(position * 153);
a.leggi(ra);
System.out.println("iscritto: " + a);
} else {
while (!dataControllata.equalsIgnoreCase(data)) {
conta++;
ra.seek(conta * 153);
a.leggi(ra);
dataControllata = a.getDataNascita();
dataControllata = normalizza(dataControllata);
if (dataControllata.equalsIgnoreCase(data)) {
int b = (int) ra.getFilePointer() - 2;
int position = b / 153;
ra.seek(position * 153);
a.leggi(ra);
System.out.println("iscritto: " + a);
}
}
}
ra.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
if i search a "data" and it's not the last of the file it will give me an infinite "null" output
答案 0 :(得分:0)
如果要消除String末尾的空格,只需使用trim()
方法。
System.out.println(" my String ".trim()); // prints 'my String'
如果您需要消除字符串中的所有空格,请使用replace(String, String)
System.out.println(" my String ".replace(" ", "")); // prints 'myString'
答案 1 :(得分:0)
假设你有理由不使用String.trim(),你可以做一个更简单的实现:
从字符串的结尾开始,向后看每个.charAt(i)直到!=''。然后只子串一次,在非空间字符之后切割。