我正在使用以下代码读取文本文件,
public async Task<PagedList<Product>> GetProductsOfCategory(Guid id, Guid shopId, int pageNumber, int pageSize)
{
var category = await _context.GetCollection<Shop>("shops").Find(x => x.Id == shopId && x.CategoryList.Any(y => y.Id == id)).Project(c => c.CategoryList.ElementAt(-1)).SingleOrDefaultAsync();
return await PagedList<Product>.CreateAsync(category.ProductList, pageNumber, pageSize);
}
文本文件:
如何在读取文件时跳过所有unicode字符?
答案 0 :(得分:0)
您可以跳过所有包含非ASCII字符的行:
if(Charset.forName("US-ASCII").newEncoder().canEncode(line)){
continue;
}
答案 1 :(得分:0)
字符串中的所有字符均为Unicode。字符串是UTF-16代码单元的计数序列。用“ Unicode”表示,您还必须在其他未指定的其他字符集中也不要使用。为了便于讨论,我们假设使用ASCII。
正则表达式有时有时是模式需求的最简单表达:
if (!line.matches("\\p{ASCII}*")) continue;
也就是说,如果字符串不是仅由任何数字组成,包括0,即“ ASCII”字符(即*
的意思),则继续。
({String.matches
在整个字符串上寻找匹配项,因此实际的正则表达式模式为^\p{ASCII}*$
。)
答案 2 :(得分:0)
这样的事情可能会让你前进:
for (char c : line.toCharArray()) {
if (Character.UnicodeBlock.of(c) == Character.UnicodeBlock.BASIC_LATIN) {
// do something with this character
}
}
您可以以此为起点来丢弃每个非基本字符,或者如果整行包含一个非基本字符,则丢弃整行。