我们说我需要阅读一个日志文件。一旦日志文件到达状态为“我是一个重要的日志”的行。需要用那条线做一些事情。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "Cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! UserHomeScreenTableViewCell
// Configure the cell...
cell.artsAuthorName.text = globalArr[indexPath.row].productAuthor
cell.priceLabel.text = "\(globalArr[indexPath.row].productPrice)"
let productDetailsObject = globalArr[indexPath.row].artImages
print("@@@@@@@@@@@@@@@@@",productDetailsObject)
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
if let url = (NSURL(string: self.globalArr[indexPath.row])) {
//The error comes here....in self.global array
if let data = NSData(contentsOfURL: url) {
if let image = UIImage(data: data) {
dispatch_async(dispatch_get_main_queue()) { () -> Void in
cell.artImageView.image = image
}
}
}
}
})
return cell
}
实现这一目标的最佳方式是什么?
答案 0 :(得分:2)
我建议使用InputStreamReader来读取文件,然后将其包装在缓冲的阅读器中,如示例所示。由于您说您知道要查找的关键字,因此您可以通过类似方式阅读并使用“包含”来标识该行。
你如何处理这条线将再次取决于你已经知道什么,你不知道什么,以及模式是否一致。如果模式一致,您可以尝试执行拆分/标记化,然后连接相关信息。
如果已知内容的详细信息,请尽可能使用它来识别出现的位置,从而最大限度地减少reg-exp的使用,否则会导致解析比所需更多的数据(而不是太多的关注) )。
如果你正在使用jdk7,那么你就不必过多地处理消耗非gc内存的字符串了,因为来自jdk7 onwards the string is present in the heap。
答案 1 :(得分:1)
您可以按照以下方式执行此操作:
搜索第一次出现的INFO
,然后将子字符串从0
带到位置-1。
搜索正则表达式模式[0-9, ]
,然后使用,
拆分内容,并将0
作为Id
和1
作为AnotherValueIWant
以下是快速代码段:
public static void main (String[] args)
{
String sample = "2016-02-06 10:19:36,410 INFO [[RequestMappingHandlerMapping]]: I am an important log [123, 21] ...{.....}";
int position = sample.indexOf("INFO");
System.out.println("TimeStamp: " + sample.substring(0,position-1));
Pattern MY_PATTERN = Pattern.compile("\\[[0-9, ]+\\]");
Matcher m = MY_PATTERN.matcher(sample);
while (m.find()) {
String str = m.group(0);
String[] s = str.substring(1,str.length()-2).split(", ");
System.out.println("Id: " + s[0]);
System.out.println("AnotherValueIWant: " + s[1]);
}
}
输出:
TimeStamp: 2016-02-06 10:19:36,410
Id: 123
AnotherValueIWant: 2
答案 2 :(得分:-1)
你也可以这样做:
$('.ui-state-default').blur(function() {
if ($(this).val() == '') {
$(this).removeClass('data');
} else {
$(this).addClass('data');
}
})