删除除连字符以外的所有特殊字符

时间:2013-09-10 07:50:17

标签: java string replace split formatting

我有两个字符串,例如“Stack Overflow”和“Stack-Overflow”。 现在我正在开发一个String匹配方法,我需要格式化一些字符串。

除连字符外,每个特殊字符都应该是字符串的结尾。因此“Stack Overflow”将成为“Stack”,“Stack-Overflow”将保持不变。

我已使用str.split(" ", 1)[0];str.replaceAll("\\s", "")str.replaceAll("[^a-zA-Z0-9]", "");,但它不与连字符合作。

我应该使用什么替代方法?

3 个答案:

答案 0 :(得分:2)

使用[^\\w-]+正则表达式

    String str = "Stack-Overflow";
    String str2 = str.split("[^\\w-]+")[0];     
    System.out.println(str2);

对于:Stack-Overflow输出Stack-Overflow

对于:Stack Overflow输出Stack

答案 1 :(得分:0)

.split("\\W")[0]似乎正在发挥作用。

  System.out.println("Hello-World".split("\\W")[0]);

从这里打印“Hello”,然后

  System.out.println("Hello World".split("\\W")[0]);

也一样,而

  System.out.println("Hello123123orld".split("\\W")[0]);

打印“Hello123123orld”,正如您所料。

答案 2 :(得分:0)

这是使用正则表达式

在C#中执行此操作的方法
string regex = "[^a-zA-Z0-9-]";
var s3 = Regex.Split(inputString, regex)[0];

您也可以在Java中实现类似类型的代码。