Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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中,从长字符串中提取数据并存储到单独的变量中_Java - Fatal编程技术网

在java中,从长字符串中提取数据并存储到单独的变量中

在java中,从长字符串中提取数据并存储到单独的变量中,java,Java,我的字符串采用以下格式: (请注意,所有图元都由空格分隔) 因此字符串应该如下所示: data ="3 email@goofy.com 2013 July 13 c:\hold_files\lisa.jpg" 我需要在以下变量中获取该字符串中的每个元素: String sRow_id, sEmail, sYear sDay sPath; 有人知道怎么做吗?您可以使用string类的方法拆分字符串,该方法为您提供一个string数组 大概是这样的: String[] splitArray =

我的字符串采用以下格式: (请注意,所有图元都由空格分隔)

因此字符串应该如下所示:

data ="3 email@goofy.com 2013 July 13 c:\hold_files\lisa.jpg"
我需要在以下变量中获取该字符串中的每个元素:

String sRow_id, sEmail, sYear sDay sPath;

有人知道怎么做吗?

您可以使用
string
类的方法拆分字符串,该方法为您提供一个
string
数组

大概是这样的:

String[] splitArray = data.split("\\s+"); // for more than one spaces
String[] splitArray = data.split("\\s"); // exactly one space
我需要变量中的这些元素,而不是数组

您可以使用简单数组索引将每个数组元素分配给一个变量。

使用
.split()
按空格分隔符拆分字符串

像这样:

data ="3 email@goofy.com 2013 July 13 c:\\hold_files\\lisa.jpg";

String[] split = data.split("\\s");
String sRow_id = split[0];
String sEmail = split[1];
String sYear = split[2];
String sDay = split[3];
String sPath = split[4];

Log.i(TAG, sRow_id + " " + sEmail + " " + sYear + " " + sDay + " " + sPath);
使用:


使用
split
是另一种方法

您是如何向scannerInstance提供“数据”的?有一个构造函数,它列在链接上,答案经过编辑以反映这一点。顺便说一句,Android编码约定不建议对字符串变量使用前缀“s”,但它通常用于指示静态变量。嗨,好吧,这不起作用-因为如果我使用split,我的数组将是这样的:var[0]=rowid,var[1]=email@FishBoy你是认真的吗..为什么不自己做..你只需要使用索引..让我们希望路径不包含空格(更不用说两个或更多连续空格!),并且这不会被本地化为一种语言,其中一个月的名称可能不止一个单词(我不知道该用哪种语言,但我见过一些奇怪的东西…)。当然,也有String.split(String,int),但这只包括包含空格的路径的情况。也就是说,我给你+1。@MichaelKjorling完全正确!我们需要OP提供更多关于这方面的信息。我遇到过几次这样的情况,当时假设“永远不可能改变”变成了“我们必须能够改变它”。这并不漂亮。如果有超过1个空格,你需要使用
+
。。是的,肯,我认为这是有效的:)@Anirudh确实如此,但问题规定它们由“空格”分隔“。即1.)@肯沃尔夫:哦……是的,的确……@FishBoy太棒了!如果解决了你的问题,请考虑把这个答案标记为接受。原因如下:
data ="3 email@goofy.com 2013 July 13 c:\\hold_files\\lisa.jpg";

String[] split = data.split("\\s");
String sRow_id = split[0];
String sEmail = split[1];
String sYear = split[2];
String sDay = split[3];
String sPath = split[4];

Log.i(TAG, sRow_id + " " + sEmail + " " + sYear + " " + sDay + " " + sPath);
String data ="3 email@goofy.com 2013 July 13 c:\hold_files\lisa.jpg";
Scanner scannerInstance = new Scanner(data);
sRowID = scannerInstance.next(); 
sEmail = scannerInstance.next();
sYear = scannerInstance.next();
sDay = scannerInstance.next();
sPath = scannerInstance.next();