2017-05-08 57 views
-1

如何删除所有不必要的信息并仅打印SAMPLE COMPANY。请注意,这个值可能会改变。在此字符串唯一的静态值是:名称:,:地址:,:联系人:计数并删除字符串 - java

:名称:示例公司:地址:#79城市地标哥:联系人:1234567个

谢谢!

+0

这是你所处理的数据的单行线,还是有许多这样的线路? –

+0

如果你不提供[sscce](http://sscce.org/),将会很难帮助你... –

回答

2

您可以使用string.split(":")并读取第三对象从数组以得到你的价值

+0

不是这样,第二个值在这个例子中是'name'(因为只有尾空串被排除在外)。但逻辑仍然正确 – AxelH

+0

同意@AxelH。编辑我的答案。谢谢 –

+0

当公司名称中有一个':'时,这会失败。我会使用indexOf和substring方法。无论如何干净解决方案+1。 –

0
string[] sa = yourstring.split(':'); 

string newstring = sa[1]; 

然后,只需打印newstring。你说公司名称会改变,但字符串将始终采用这种格式,所以如果公司名称始终在第二位置,那么即使公司名称发生更改,这也是可行的。

+0

与[Poorvi Nigotiya](http://stackoverflow.com/a/43840066/4391450)的回答相同,因为这是相同的...秒值将是'name'而不是您寻求的值。看看'String.split'是如何工作的。 – AxelH

0

由于在String中有标签,因此我们可以使用一个capturing groups的正则表达式。

这里是它如何工作的一个简单的想法:

String s = ":name:SAMPLE COMPANY:address:#79 Landmark City Columbia:contact:‎1234567"; 
Pattern p = Pattern.compile(":name:(.*):address:(.*):contact:‎(.*)"); 
Matcher m = p.matcher(s); 
if(m.find()){ 
    System.out.println("Name : " + m.group(1)); 
    System.out.println("Address : " + m.group(2)); 
    System.out.println("Contact : " + m.group(3)); 
} 

,这将输出

Name : SAMPLE COMPANY 
Address : #79 Landmark City Columbia 
Contact : 1234567 
+0

如果地址包含字符串':address:',这个工作吗? – shmosel

+0

@shmosel如果我们更好地定义组,我们可以这样做,但老实说,这不太可能在地址中找到这种模式。 – AxelH

+0

我同意这不太可能,但对于单个冒号也是如此。或者可能有一个转义序列。这是所有的猜测,直到OP提炼他的问题。 – shmosel