Java .split()字符,字符串中有空格

时间:2017-10-19 19:10:39

标签: java string split

我正在尝试从java中的文本文件中读取一行。我收到java.lang.ArrayIndexOutOfBoundsException: 1例外。

这是我的代码:

try {
    Scanner kb = new Scanner(new FileReader(fileName));
    String line = "";
    int count = 0;
    while (kb.hasNext()) {
        line = kb.next();
        String[] temp = line.split("#");
        System.out.println(temp[1]);
        Wedding tempWed = new Wedding(temp[0], temp[1], temp[2], temp[3], Integer.parseInt(temp[4]));
        test[count] = tempWed;
        count++;
    }
} catch (FileNotFoundException ex) {

}

这是文本文件中的行:
Chiquita Sanford#Magee Sosa#2016-11-05#Garden#84

我需要按"#"分开,这部分有效。 当我尝试访问位置1的元素时,Java抛出异常。 我认为这是因为在名字和姓氏之间有一个空格,因为当我System.out.println(temp[0])显示" Chiquita"而不是" Chiquita Sanford"。

当第一个数组索引中有多个单词时,Java是否对分割有一些限制。

2 个答案:

答案 0 :(得分:3)

您必须使用nextLine方法阅读整行。 next将读取直到第一个标记(在您的情况下为“Chiquita”,因为它后跟一个空格字符并被解释为分隔符)。所以改变这一行:

public ActionResult ShowMenuGallery(int id) 
        { 
            ViewBag.guid = Guid.NewGuid(); 
            List<string> menuImage = new List<string>(); 
            ReturnImages(((Guid)ViewBag.guid).ToString(), id, ref menuImage); 



        List<MyClass> data = new List<MyClass>() { new MyClass() { src =menuImage[0] , thumb = menuImage[0] } }; 
        var json = Newtonsoft.Json.JsonConvert.SerializeObject(new 
        { 
            operations = data 
        }); 
            return Json(json); 

    } 
public class MyClass 
        { 
            public string src { get; set; } 
            public string thumb { get; set; } 
        }

用这个:

line = kb.next();

答案 1 :(得分:2)

您使用kb.next()将返回下一行而不是下一行,为此kb.nextLine() kb.hasNext()类似问题需要kb.hasNextLine()