正则表达式拆分 java
Regex split java
各位大神,能不能帮我找一个正则表达式,用split来分隔一个字符串(txt文件)的属性,字符串就是下面一行:
{'title': 'The signal', 'description': 'Una crisis nerviosa. Un ataque de pánico en pleno sermón, 'img': '9b9f6e903588a16bf90eb86ff7b079ba.jpg', 'Format': 'physic book', 'Author': 'Young, wm. paul - jersak, bradley', 'Editorial': 'Diana', 'Year': '2021', 'Idiom': 'Español', 'Isbn': '9789584293817', 'Isbn13': '9789584293817'}{'titulo': 'Quemar el Miedo', 'descripcion': 'Este es el manifiesto escrito por el Colectivo LASTESIS. , 'img': 'f56123687ddc0167a0f4186612293435.jpg', 'Formato': 'Libro físico', 'Autor': '', 'Año': '2021', 'Idioma': 'Español', 'Isbn': '9789584293626', 'Isbn13': '9789584293626'}
我需要获取每个元素的值才能重建对象
public static boolean cargarlibros(){
File f = new File(FILENAME);
FileReader reader;
try {
reader = new FileReader(f);
BufferedReader buffr = new BufferedReader(reader);
String registro;
while((registro = buffr.readLine()) != null){
String[] datos = registro.split("\{\}");
System.out.println(Arrays.toString(datos));
}
buffr.close();
reader.close();
} catch (IOException ex) {
return false;
}
return true;
}
您可以尝试添加和更改引号以将数据转换为 JSON,但这可能并不简单,尤其是当字符串包含撇号时,我认为按原样解析它更容易。您的 split
尝试没有成功,因为模式 "\{\}"
只会在 {}
处分裂,而 {}
并不存在。你可以替换
String[] datos = registro.split("\{\}");
和
String[] datos = registro.replaceFirst("^\{", "").split("}\{|}$");
for (var dato: datos)
{
String[] elems = dato.replaceFirst("^'", "").split("'?[:,] '|'$");
Map<String, String> book = new LinkedHashMap<String, String>();
for (int i = 0; i < elems.length; ) book.put(elems[i++], elems[i++]);
…
}
由于你没有说成什么数据结构来获取每个元素的值,我选择了一个Map
.
各位大神,能不能帮我找一个正则表达式,用split来分隔一个字符串(txt文件)的属性,字符串就是下面一行:
{'title': 'The signal', 'description': 'Una crisis nerviosa. Un ataque de pánico en pleno sermón, 'img': '9b9f6e903588a16bf90eb86ff7b079ba.jpg', 'Format': 'physic book', 'Author': 'Young, wm. paul - jersak, bradley', 'Editorial': 'Diana', 'Year': '2021', 'Idiom': 'Español', 'Isbn': '9789584293817', 'Isbn13': '9789584293817'}{'titulo': 'Quemar el Miedo', 'descripcion': 'Este es el manifiesto escrito por el Colectivo LASTESIS. , 'img': 'f56123687ddc0167a0f4186612293435.jpg', 'Formato': 'Libro físico', 'Autor': '', 'Año': '2021', 'Idioma': 'Español', 'Isbn': '9789584293626', 'Isbn13': '9789584293626'}
我需要获取每个元素的值才能重建对象
public static boolean cargarlibros(){
File f = new File(FILENAME);
FileReader reader;
try {
reader = new FileReader(f);
BufferedReader buffr = new BufferedReader(reader);
String registro;
while((registro = buffr.readLine()) != null){
String[] datos = registro.split("\{\}");
System.out.println(Arrays.toString(datos));
}
buffr.close();
reader.close();
} catch (IOException ex) {
return false;
}
return true;
}
您可以尝试添加和更改引号以将数据转换为 JSON,但这可能并不简单,尤其是当字符串包含撇号时,我认为按原样解析它更容易。您的 split
尝试没有成功,因为模式 "\{\}"
只会在 {}
处分裂,而 {}
并不存在。你可以替换
String[] datos = registro.split("\{\}");
和
String[] datos = registro.replaceFirst("^\{", "").split("}\{|}$");
for (var dato: datos)
{
String[] elems = dato.replaceFirst("^'", "").split("'?[:,] '|'$");
Map<String, String> book = new LinkedHashMap<String, String>();
for (int i = 0; i < elems.length; ) book.put(elems[i++], elems[i++]);
…
}
由于你没有说成什么数据结构来获取每个元素的值,我选择了一个Map
.