Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java split()方法拆分下面的字符串?_Java - Fatal编程技术网

如何使用java split()方法拆分下面的字符串?

如何使用java split()方法拆分下面的字符串?,java,Java,以下是参考代码 String data = "Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda8 2064208 407212 1552140 21% / tmpfs 4058672 0 4058672 0% /dev/shm /dev/sda1

以下是参考代码

 String data = 
    "Filesystem           1K-blocks      Used Available Use% Mounted on
    /dev/sda8              2064208    407212   1552140  21% /
    tmpfs                  4058672         0   4058672   0% /dev/shm
    /dev/sda1              1034096     62636    918932   7% /boot
    /dev/sda11             1032088    117684    861976  13% /home
    /dev/sda6              6551480   5514296    704384  89% /opt
    /dev/sda2            203145268 165930964  26728680  87% /t24bmifs
    /dev/sda7              5160576    141484   4756948   3% /tmp
    /dev/sda3             15239564  13005132   1460288  90% /usr
    /dev/sda9              2064208     68760   1890592   4% /usr/local
    /dev/sda10             2064208   1811884    147468  93% /var
    /dev/mapper/t24linfs-t24linlv
                         2113783728 1622849504 383560248  81% /t24linfs
    /dev/mapper/oracfsvg-oracfsvl
                         1909423812 1372203712 440227028  76% /oraclefs"
任何人请帮助我如何分割此字符串数据。我可以 使用
拆分(“\n”,0)
拆分前11个值。但最后两个价值观,我 我不知道怎么继续。我将拆分字符串并分配 将其转换为字符串数组,我将再次使用 空格(“\s”)并将其传递给对象[]以将其显示为表 在对话框中设置格式。

尝试此正则表达式
^\s+([\w-\/]+)+\s++\d++\s++\d++\d++\s++\d++\d++%\s+(\/[\w-]*)++

这有点难看,但它会匹配你的每一行。对于任何特殊情况,您都可以轻松地更正它

在java中使用它,如下所示:

   public void setData(String procText)
{
    try
    {
        DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(procText));
        Document xDoc = docBuilder.parse(is);
        XPath xPath = XPathFactory.newInstance().newXPath();
        String status = (String) xPath.evaluate("//status", xDoc, XPathConstants.STRING);
        if(status.compareTo("OK")!=0)
        {
            //show error                
        }
        else
        {
            String data = (String) xPath.evaluate("//data", xDoc, XPathConstants.STRING);
            String[] lines = data.split("\n", 0);
            String line = "";                        

                        model.addRow(new Object[]{ procData[0], procData[1], procData[2], procData[3], procData[4], procData[5] } );                                                

                }

            jTable1.setAutoCreateRowSorter(true);
            jTable1.setModel(model);

    }
    catch(Exception ex)
    {
        System.out.println("Exception - " + ex.getClass().getName()+":"+ ex.getMessage());
    }
    }

现在,您应该将每一行都放在lines数组中。

我尝试了这个方法,但有点冗长。但是,您可以控制如何处理。例如,第一个标题行有七个标记,其余六个标记。为了进行测试,我使用了帖子中的文本(原样),并在Windows记事本中创建了一个文本文件

String[] lines = str.split("^\s+([\w-\/]+)+\s+\d+\s+\d+\s+\d+\s+\d+%\s+(\/[\w-]*)+");
import java.util.*;
导入java.io.*;
公共类StringSplitTest{
私有静态列表字=新ArrayList();
私有静态字符串word=“”;
私有静态布尔wordFlag=true;
公共静态void main(字符串[]args)引发IOException{
//读取文件并创建单词标记
FileReader=newFileReader(“test.txt”);
INTC;
而((c=reader.read())!=-1){
makeWords((char)c);
}
reader.close();
//处理令牌以获得结果
int n=0;//跟踪一行中的字数
列表行=新的ArrayList();
for(int i=0;i
您想要的最终结果/目标是什么?嗨,蒂姆,我的目标是将每一行(从字符串数据)拆分为一个数组(行)中的单个元素。谢谢jorge V。我将尝试此操作并返回给youHi Prasad。谢谢您的想法。我得到了预期的结果。for(int j=0;jimport java.util.*; import java.io.*; public class StringSplitTest { private static List<String> words = new ArrayList<>(); private static String word = ""; private static boolean wordFlag = true; public static void main(String [] args) throws IOException { // Read file and create word tokens FileReader reader = new FileReader("test.txt"); int c; while ((c = reader.read()) != -1) { makeWords((char) c); } reader.close(); // Process tokens to get result int n = 0; // tracks count of words on a line List<String> line = new ArrayList<>(); for (int i = 0; i < words.size(); i++) { if (i < 7) { // The first header line has 7 tokens // ignore for now continue; } // Process remaining lines (6 tokens for each line) if (++n == 7) { System.out.println(line); // prints a line n = 1; line = new ArrayList<>(); } line.add(words.get(i)); } System.out.println(line); // prints last line } /* * Processes all text (a character at a time and stores them as * word tokens in a List<String>. Uses whitespaces as delimiter. * NOTE: The whitespace as defined in the Character.isWhitespace() * https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html. */ private static void makeWords(char c) { if (! Character.isWhitespace(c)) { if (! wordFlag) { wordFlag = true; word = ""; } word = word + String.valueOf(c); } else { if (wordFlag) { wordFlag = false; words.add(word); } } } }