在java中遇到连字符时拆分句子
我的程序中有以下代码。当遇到连字符时,它会分割一行,并将每个单词存储在字符串数组“tokens”中。但我希望在句子中遇到连字符时,连字符也存储在字符串数组“tokens”中在java中遇到连字符时拆分句子,java,regex,string,split,Java,Regex,String,Split,我的程序中有以下代码。当遇到连字符时,它会分割一行,并将每个单词存储在字符串数组“tokens”中。但我希望在句子中遇到连字符时,连字符也存储在字符串数组“tokens”中 String[] tokens = line.split("-"); 上面的代码拆分了句子,但也完全忽略了结果数组中的连字符。 如何将连字符也存储在结果数组中?编辑:- [abc, -, efg] 似乎您希望在空格和连字符上进行拆分,但只在数组中保留连字符(我从您的此行推断-将每个单词存储在字符串数组中),您可以使用以下
String[] tokens = line.split("-");
上面的代码拆分了句子,但也完全忽略了结果数组中的连字符。
如何将连字符也存储在结果数组中?编辑:-
[abc, -, efg]
似乎您希望在空格
和连字符
上进行拆分,但只在数组
中保留连字符
(我从您的此行推断-将每个单词存储在字符串数组中),您可以使用以下方法:-
String[] tokens = "abc this is-a hyphen def".split("((?<=-)|(?=-))|\\s+");
System.out.println(Arrays.toString(tokens));
String[] tokens = "abc-efg".split("((?<=-)|(?=-))");
System.out.println(Arrays.toString(tokens));
要在连字符前后处理
空格
,可以首先使用replaceAll
方法修剪这些空格,然后执行拆分:-
"abc this is - a hyphen def".replaceAll("[ ]*-[ ]*", "-")
.split("((?<=-)|(?=-))|\\s+");
它在
连字符(-)
前后的空字符上拆分
[abc, -, efg]
似乎您希望在空格
和连字符
上进行拆分,但只在数组
中保留连字符
(我从您的此行推断-将每个单词存储在字符串数组中),您可以使用以下方法:-
String[] tokens = "abc this is-a hyphen def".split("((?<=-)|(?=-))|\\s+");
System.out.println(Arrays.toString(tokens));
String[] tokens = "abc-efg".split("((?<=-)|(?=-))");
System.out.println(Arrays.toString(tokens));
要在连字符前后处理空格
,可以首先使用replaceAll
方法修剪这些空格,然后执行拆分:-
"abc this is - a hyphen def".replaceAll("[ ]*-[ ]*", "-")
.split("((?<=-)|(?=-))|\\s+");
它在连字符(-)
前后的空字符上拆分。我建议将正则表达式与Java模式和匹配器结合使用。例如:
String line = "a-b-c-d-e-f-";
Pattern p = Pattern.compile("[^-]+|-");
Matcher m = p.matcher(line);
while (m.find())
{
String match = m.group();
System.out.println("match:" + match);
}
要测试正则表达式,您可以使用在线regexp测试仪,如,我建议将正则表达式与Java模式和Matcher结合使用。例如:
String line = "a-b-c-d-e-f-";
Pattern p = Pattern.compile("[^-]+|-");
Matcher m = p.matcher(line);
while (m.find())
{
String match = m.group();
System.out.println("match:" + match);
}
要测试正则表达式,您可以使用在线regexp测试仪,如您不能手动添加连字符吗?另外,如果假设您有“abc xyz”,那么您希望使用类似于“abc-”的abc连字号,或者使用类似于-xyz的xyz连字号,您不会说您希望在哪里使用连字号。作为一个单独的元素或附加到一个单词?我想要像“abc”-“xyz”这样的输出也许这个解决方案可以帮助您:@RohitJain“abc-def”呢?它给出了“abc”、“-”和“def”。如何获得“abc”、“-”和“def”?您不能手动添加连字符吗?另外,如果假设您有“abc xyz”,那么您希望使用类似于“abc-”的abc连字号,或者使用类似于-xyz的xyz连字号,您不会说您希望在哪里使用连字号。作为一个单独的元素或附加到一个单词?我想要像“abc”-“xyz”这样的输出也许这个解决方案可以帮助您:@RohitJain“abc-def”呢?它给出了“abc”、“-”和“def”。怎样才能得到“abc”、“-”和“def”?如果没有空字符?这不会分割空格分隔的单词,是吗?@Romczyk。??“总有一个。”布里亚纳涅说。。它会的,但它会包括上一个和下一个单词中的空格。@BrianAgnew。。例如,对于“abc-efg”
,它将给出:-[abc,-,efg]
。注意abc
和efg
后面的空格。如果没有空字符,这不会分割空格分隔的单词,是吗?@Romczyk。??“总有一个。”布里亚纳涅说。。它会的,但它会包括上一个和下一个单词中的空格。@BrianAgnew。。例如,对于“abc-efg”
,它将给出:-[abc,-,efg]
。注意abc
和efg
后面的空格。