这个问题在这里已有答案:
我使用Java 8并连接到MySQL。我想插入一个名为sample.txt
的文本文件,文本文件中的数据是几行:
1|LG P880 4X HD|DESCRIPTION|PRICE|CATEGORY
2|Google Nexus 4|DESCRIPTION|PRICE|CATEGORY
3|Samsung Galaxy S4|DESCRIPTION|PRICE|CATEGORY
4|Bench Shirt|DESCRIPTION|PRICE|CATEGORY
5|Lenovo Laptop|DESCRIPTION|PRICE|CATEGORY
6|Samsung Galaxy Tab 10.1|DESCRIPTION|PRICE|CATEGORY
7|Spalding Watch|DESCRIPTION|PRICE|CATEGORY
8|Sony Smart Watch|DESCRIPTION|PRICE|CATEGORY
9|Huawei Y300|DESCRIPTION|PRICE|CATEGORY
10|Abercrombie Lake Arnold Shirt|DESCRIPTION|PRICE|CATEGORY
11|Abercrombie Allen Brook Shirt|DESCRIPTION|PRICE|CATEGORY
可以很容易地看出,管道(|
)用作柱断裂。
我已经在MySQL DB中有这个信息的表,但是当我将这些行插入DB时,它只会在每个列中输入第一个字母
第1行:
1 L D P C only this letters go to table.
我试过这个:
try {
FileInputStream fstream = new FileInputStream("F:\\sample.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
ArrayList list = new ArrayList();
while ((strLine = br.readLine()) != null) {
list.add(strLine);
}
Iterator itr;
for (itr = list.iterator(); itr.hasNext();) {
String str = itr.next().toString();
String[] splitSt = str.split("|");
String id = "", name = "", des = "", price = "", categ = "";
for (int i = 0; i <= splitSt.length; i++) {
id = splitSt[0];
name = splitSt[1];
des = splitSt[2];
price = splitSt[3];
categ = splitSt[4];
}
sql = "insert into tbproduct(id,Name,Des,Price,Category) values('" + id + "' ,'" + name + "' ,'" + des + "' ,"
+ "'" + price + "','" + categ + "' )";
MySQLConnector.doExcute(sql);
}
} catch (Exception e) {
e.printStackTrace();
}
怎么解决这个?
发布于 2019-06-10 14:44:30
您需要转义管道角色,如下所示。
str.split("\\|");
split
使用正则表达式,在正则表达式中|
是表示OR
运算符的元字符 。你需要使用\
(以String编写为“\” 来转义该字符 ,因为 \
它也是字符串文字中的元字符,需要另一个字符串 \
来转义它)。
你也可以使用
str.split(Pattern.quote("|"));
然后 Pattern.quote
创建表示|的正则表达式的转义版本。
https://stackoverflow.com/questions/-100006969
复制相似问题