java切割字符串并保留分隔符_java – 如何拆分一个字符串,但也保留分隔符?
时间: 2024-03-17 07:44:10 浏览: 11
可以使用正则表达式来拆分字符串并保留分隔符。具体方法如下:
```java
String str = "Hello,world!Welcome,to,Java.";
String regex = "(?<=\\p{Punct})|(?=\\p{Punct})";
String[] result = str.split(regex);
for (String s : result) {
System.out.println(s);
}
```
输出结果为:
```
Hello,
world!
Welcome,
to,
Java.
```
解释一下上面的代码:
- `str` 是要被拆分的字符串。
- `regex` 是正则表达式,它使用了零宽断言来匹配标点符号。
- `(?<=\\p{Punct})` 匹配前面是标点符号的位置。
- `(?=\\p{Punct})` 匹配后面是标点符号的位置。
- `result` 是拆分后的字符串数组。
- 最后使用 `for` 循环遍历 `result` 数组,输出每个字符串。
注意:`\\p{Punct}` 匹配的是 Unicode 中的所有标点符号。如果你只需要匹配某个特定的标点符号,可以直接在正则表达式中写出来,比如 `","`。
相关问题
oracle 字符串 分隔符切割 regexp_substr(
regexp_substr是Oracle数据库中的一个函数,用于在一个字符串中查找并返回符合某个模式的子串。它可以实现字符串的分隔符切割功能。
regexp_substr函数有三个参数:输入字符串、匹配模式以及起始位置。其中,输入字符串就是要被切割的原始字符串;匹配模式是一个正则表达式,用于指定分隔符的模式;起始位置是可选参数,用于指定从哪个位置开始查找匹配的子串,默认为1。
例如,假设有一个字符串:"Hello,World,Welcome,to,Oracle",我们想使用逗号作为分隔符,切割出每个单词。可以使用下列SQL语句实现:
SELECT regexp_substr('Hello,World,Welcome,to,Oracle', '[^,]+', 1, LEVEL)
FROM dual
CONNECT BY regexp_substr('Hello,World,Welcome,to,Oracle', '[^,]+', 1, LEVEL) IS NOT NULL;
其中,'Hello,World,Welcome,to,Oracle'是输入字符串;'[^,]+'是匹配模式,表示匹配一个或多个非逗号字符;1是起始位置;LEVEL是层次关系的指示器,用于递归地返回每个匹配的子串。
执行以上SQL语句,将得到以下结果:
Hello
World
Welcome
to
Oracle
即将原始字符串按逗号分隔成多个子串。这就是使用regexp_substr函数实现字符串分隔符切割的方法。
为什么python里我用分隔符拆分字符串不显示分隔符呢?
在Python中,使用字符串的 `split()` 方法可以将一个字符串按照指定的分隔符拆分成多个子字符串,并返回一个包含所有子字符串的列表。但在这个过程中,分隔符本身并不会被保留在子字符串中。这是因为分隔符只是用来分隔字符串的标记,而不是字符串的一部分。
例如,当你执行以下代码时:
```python
s = "1,2,3,4"
lst = s.split(",")
print(lst)
```
输出结果为:
```
['1', '2', '3', '4']
```
可以看到,分隔符 "," 并没有出现在输出结果中。如果希望保留分隔符,可以考虑使用正则表达式等其他技术来实现。