在 2 个字符的分隔符上拆分 java 中的字符串
Splitting string in java on a 2 character delimeter
我有一个格式为 first<-0
或 i<-length
的字符串,其中使用 <-
而不是赋值运算符。
我想把它分成 3 个部分,即左侧、运算符和右侧。
然后在标记化之后存储所有 3 个部分。
问题不在于存储分隔符,我已经通过在构造函数中传递第三个参数 true
解决了这个问题。
问题是 StringTokenizer
仅在分隔符长度为 1 个字符时有效。有解决办法吗?
StringTokenizer tokens= new StringTokenizer("first<-0", "<-", true);
您可以按照以下方式进行:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String str = "first<-0";
// Without using regex
String[] parts = new String[3];
parts[0] = str.substring(0, str.indexOf("<-"));
parts[1] = "<-";
parts[2] = str.substring(str.indexOf("<-") + 2);
System.out.println(Arrays.toString(parts));
// Using regex
String[] p = str.split("((?<=<-)|(?=<-))");
System.out.println(Arrays.toString(p));
}
}
输出:
[first, <-, 0]
[first, <-, 0]
如有任何疑问,请随时发表评论。
我有一个格式为 first<-0
或 i<-length
的字符串,其中使用 <-
而不是赋值运算符。
我想把它分成 3 个部分,即左侧、运算符和右侧。
然后在标记化之后存储所有 3 个部分。
问题不在于存储分隔符,我已经通过在构造函数中传递第三个参数 true
解决了这个问题。
问题是 StringTokenizer
仅在分隔符长度为 1 个字符时有效。有解决办法吗?
StringTokenizer tokens= new StringTokenizer("first<-0", "<-", true);
您可以按照以下方式进行:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String str = "first<-0";
// Without using regex
String[] parts = new String[3];
parts[0] = str.substring(0, str.indexOf("<-"));
parts[1] = "<-";
parts[2] = str.substring(str.indexOf("<-") + 2);
System.out.println(Arrays.toString(parts));
// Using regex
String[] p = str.split("((?<=<-)|(?=<-))");
System.out.println(Arrays.toString(p));
}
}
输出:
[first, <-, 0]
[first, <-, 0]
如有任何疑问,请随时发表评论。