2013-05-17 51 views
-1

我想从字符串拆分字符串,整数和双精度。 该字符串输入到一个文本框中,可以包含全部三个字符串。 (例如:你好13 94 3,2 6.4再见) 我想拆分它们并且总结它们。然后我想让他们看到一个标签。使用IndexOf()分割字符串,双打和字符串使用IndexOf()

所以标签应该说: 字符串:你好再见 诠释:107 双:9,6

谁能帮我进行?我不允许使用分割功能。

+2

它看起来像使用逗号和句点作为小数点。 – maba

+2

尝试一下。迭代字符串的字符并在每次到达空间时结束当前字词。然后检查当前单词是双精度型,整型还是字符串。 –

+0

遍历字符并使用正则表达式来标识整数?[0-9] *,double?[0-9] * \。?[0-9] *和string?[a-zA-Z \ s] – Jack

回答

1

好,没有分裂你可以通过掠夺和焦炭您正在阅读的检测字符。如果它有字母,它的字符串,如果点或逗号是它的两倍。每次找到空间时重置此检测。这几乎是你应该需要的。

问候

+0

他意味着循环:) – Jack

+0

感谢提示,我现在可以开始了! – Robin

0

如果只允许根据当前区域的方式来指定小数点,则可以使用Scanner来解决这个问题优雅:

Scanner sc = new Scanner(inputString); 

while (sc.hasNext()) { 
    if (sc.hasNextInt()) { 
     // It is an integer 
     sc.nextInt(); 
    } else if (sc.hasNextDouble()) { 
     // It is a double 
     sc.nextDouble(); 
    } else { 
     // Neither, so treat it as string 
     sc.next(); 
    } 
} 

其实,Scanner类允许多在构成double的构成中具有更大的灵活性。在Scanner类的文档中查看the grammar关于数字语法的信息。

注意,标记必须用空格隔开(通过\p{javaWhitespace}定义)。可以定义不同的分隔符,但它需要明确定义您的情况下分隔符的含义。

它同时允许,.作为小数点分隔符实际上没有多大意义。 345,234就是这样一个例子,不清楚这个数字应该是十万还是几百。用户应该使用其系统所在的Locale中的相应小数分隔符和千位分隔符。

+0

在像德国这样的一些国家,他们使用逗号代替小数点。因此可能有需要。 – Jack

+0

@Jack:我同意这个需求,但我不同意允许''''和'.'同时使用同一个含义(小数点)。 – nhahtdh