簡體   English   中英

在Java中將字符串拆分為char

[英]Split string into chars in java

我想讀取一個包含如下文本的大文件:

QSSTNAFDQVS, h
SSTNAFDQVSA, h
STNAFDQVSAQ, h
TNAFDQVSAQG, h
NAFDQVSAQGK, h
AFDQVSAQGKV, h
FDQVSAQGKVI, h
EAILGDQFLKQ, h
AILGDQFLKQQ, h
ILGDQFLKQQY, h
LGDQFLKQQYV, h
VGKMAKSVMGH, h
GKMAKSVMGHN, h
KMAKSVMGHNW, h
MAKSVMGHNWV, h
....

我的代碼:

BufferedReader br = new BufferedReader(file);
        while((line = br.readLine()) != null) {
            String[] values = line.split(",");
            String atributes = values[0];
            String cls = values[1].trim();
            for (int i=0; i<atributes.length(); i++) {
                char atribute = atributes.charAt(i);
                System.out.print(atribute + " ");
            }
            System.out.println();
        }

我的問題是,在我分割了字符串atributes並打印之后,它們以隨機順序打印:

S S D I T A S V N C A 
S D I T A S V N C A K 
D I T A S V N C A K K 
I T A S V N C A K K I 
T A S V N C A K K I V 
A S V N C A K K I V S 
.....

如果我進行打印但不進行以下拆分:

BufferedReader br = new BufferedReader(file);
            while((line = br.readLine()) != null) {
                String[] values = line.split(",");
                String atributes = values[0];
                String cls = values[1].trim();
                System.out.println(atributes);
            }

我以正確的順序得到它們:

QSSTNAFDQVS
SSTNAFDQVSA
STNAFDQVSAQ
TNAFDQVSAQG
NAFDQVSAQGK
AFDQVSAQGKV
FDQVSAQGKVI
EAILGDQFLKQ
AILGDQFLKQQ
.....

拆分它們后,如何解決此問題,以便以與文本文件相同的順序獲得這些值?

我認為問題不在於屬性是隨機的,我在您的代碼中看不到任何原因。 您確定是這種情況嗎? 這是完整的代碼嗎?

我運行了以下代碼:

String line = "ZYXABCDEFGHIJ, h";
String[] values = line.split(",");
String atributes = values[0];
String cls = values[1].trim();
for (int i=0; i<atributes.length(); i++) {
    char atribute = atributes.charAt(i);
    System.out.print(atribute + " ");
}

我覺得很好: ZYXABCDEFGHIJ

您的問題在其他地方-此代碼-顯然以與您相同的方式起作用:

static final String[] data = {
    "QSSTNAFDQVS, h",
    "SSTNAFDQVSA, h",
    "STNAFDQVSAQ, h",
    "TNAFDQVSAQG, h",
    "NAFDQVSAQGK, h",
    "AFDQVSAQGKV, h",
    "FDQVSAQGKVI, h",
    "EAILGDQFLKQ, h",
    "AILGDQFLKQQ, h",
    "ILGDQFLKQQY, h",
    "LGDQFLKQQYV, h",
    "VGKMAKSVMGH, h",
    "GKMAKSVMGHN, h",
    "KMAKSVMGHNW, h",
    "MAKSVMGHNWV, h",};

public void test() {
    for (String line : data) {
        String[] values = line.split(",");
        String atributes = values[0];
        String cls = values[1].trim();
        for (int i = 0; i < atributes.length(); i++) {
            char atribute = atributes.charAt(i);
            System.out.print(atribute + " ");
        }
        System.out.println();

    }
}

版畫

Q S S T N A F D Q V S 
S S T N A F D Q V S A 
S T N A F D Q V S A Q 
T N A F D Q V S A Q G 
N A F D Q V S A Q G K 
A F D Q V S A Q G K V 
F D Q V S A Q G K V I 
E A I L G D Q F L K Q 
A I L G D Q F L K Q Q 
I L G D Q F L K Q Q Y 
L G D Q F L K Q Q Y V 
V G K M A K S V M G H 
G K M A K S V M G H N 
K M A K S V M G H N W 
M A K S V M G H N W V 

可以由多個線程讀取文件嗎?

似乎您在第一個代碼的輸入中輸入了錯誤的文件。

您能否發布以下結果:

BufferedReader br = new BufferedReader(file);
            while((line = br.readLine()) != null) {
                String[] values = line.split(",");
                String atributes = values[0];
                String cls = values[1].trim();
                System.out.println(atributes);
                System.out.println();
                for (int i=0; i<atributes.length(); i++) {
                   char atribute = atributes.charAt(i);
                   System.out.print(atribute + " ");
                }
                System.out.println();
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM