我正在努力处理我必须阅读的文本文件。在此文件中,有两种类型的行:
133 0102764447 44 11 54 0.4 0 0.89 0 0 8 0 0 7 Attribute_Name='xyz' Type='string' 02452387764447 884
134 0102256447 44 1 57 0.4 0 0.81 0 0 8 0 0 1 864
我想在这里做的是对所有行进行文本扫描,然后尝试确定'xyz'的数量(以及总行数)。
我试图使用:
fileID = fopen('test.txt','r') ;
data=textscan(fileID, %d %d %d %d %d %d %d %d %d %d %d %d %d %s %s %d %d','\n) ;
然后我将尝试访问数据{i,16}以计算有多少等于Attribute_Name ='xyz',但它似乎并不是一个有效的。
什么是阅读数据的正确方法(我感兴趣的是计算我有多少Attribute_Name ='xyz')?感谢
答案 0 :(得分:1)
您只需使用引用here的package util;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class GuiTest {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GuiTest window = new GuiTest();
window.frame.setVisible(true);
Dialog d = new Dialog();
d.show();
window.frame.requestFocus();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public GuiTest() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Dialog extends JFrame {
private JFrame frame;
public void show() {
if (frame == null) {
frame = new JFrame();
frame.setTitle("Dialog");
frame.setBounds(100, 100, 450, 300);
frame.add(new JTextField("Hello"));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
frame.setVisible(true);
}
}
。
在您的情况下,您可以这样使用它:
count
filetext = fileread("test.txt");
A = count(filetext , "xyz")
会将整个文本文件读入单个字符串。之后,您可以使用fileread
处理该字符串,这将返回给定模式的出现次数。
答案 1 :(得分:0)
使用旧版MATLAB时的替代方案就是这个。它适用于R2006a
及以上。
filetext = fileread("test.txt");
A = length(strfind(filetext, "xyz");
答案 2 :(得分:0)
可以选择strsplit
。您可以执行以下操作:
count = 0;
fid = fopen('test.txt','r');
while ~feof(fid)
line = fgetl(fid);
words = strsplit( line )
ind = find( strcmpi(words{:},'Attribute_Name=''xyz'''), 1); % Assume only one instance per line, remove 1 for more and correct the rest of the code
if ( ind > 0 ) then
count = count + 1;
end if
end
所以最后count
会给你数字。