我有两个字符串,例如“堆栈溢出”和“堆栈溢出”。现在我正在研究一种字符串匹配方法,我需要格式化一些字符串。
每个特殊字符都应该是字符串的结尾,连字符除外。所以“堆栈溢出”将变为“堆栈”,而“堆栈溢出”将保持不变。
我已经使用过str.split(" ", 1)[0];
,但它不与连字符配合使用str.replaceAll("\\s", "")
。str.replaceAll("[^a-zA-Z0-9]", "");
我应该使用什么替换方法?
我有两个字符串,例如“堆栈溢出”和“堆栈溢出”。现在我正在研究一种字符串匹配方法,我需要格式化一些字符串。
每个特殊字符都应该是字符串的结尾,连字符除外。所以“堆栈溢出”将变为“堆栈”,而“堆栈溢出”将保持不变。
我已经使用过str.split(" ", 1)[0];
,但它不与连字符配合使用str.replaceAll("\\s", "")
。str.replaceAll("[^a-zA-Z0-9]", "");
我应该使用什么替换方法?
使用[^\\w-]+
正则表达式
String str = "Stack-Overflow";
String str2 = str.split("[^\\w-]+")[0];
System.out.println(str2);
对于:Stack-Overflow
输出Stack-Overflow
对于:Stack Overflow
输出Stack
这是在 C# 中使用正则表达式的一种方法
string regex = "[^a-zA-Z0-9-]";
var s3 = Regex.Split(inputString, regex)[0];
您也可以在 Java 中实现类似类型的代码。
.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”。