我有两个字符串,例如“Stack Overflow”和“Stack-Overflow”。 现在我正在开发一个String匹配方法,我需要格式化一些字符串。
除连字符外,每个特殊字符都应该是字符串的结尾。因此“Stack Overflow”将成为“Stack”,“Stack-Overflow”将保持不变。
我已使用str.split(" ", 1)[0];
,str.replaceAll("\\s", "")
和str.replaceAll("[^a-zA-Z0-9]", "");
,但它不与连字符合作。
我应该使用什么替代方法?
答案 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中实现类似类型的代码。