首先,我要为我的英语不佳道歉,请让我解释一下我的情况,
假设我有2个文本框供用户输入。在服务器端,我想结合
两个字符串作为单个字符串,以','字符分隔。例如,如果一个用户
输入第一个文本框为“hello world”,第二个文本框为“foo bar”,
最后一个字符串应该是“hello world,foo bar”。该字符串需要分割
稍后进行其他操作以利用其内容。因此,当字符串被分割时,
','字符用作分隔符,结果字符串
将会
string [0] =“你好世界”
string [1] =“foo bar”
分别。

当然,当用户在字符串中键入“,”字符时,这很容易受到攻击。
不能正确分割的字符串中。例如,当用户输入“hello,world”时
在第一个文本框中,在第二个文本框中为“foo,bar”,最后一个字符串为
“hello,world,foo,bar”和分割结果错误地是4个单独的字符串。

我想到了自定义转义字符的想法,即如果用户输入','字符,则必须在其前面加上'/'
服务器端的字符。例如,如果用户输入“hello,world”和“foo,bar”
,最后一个字符串将是“hello /,world,foo /,bar”,由于精确
分隔符是已知的,它是单个','字符,前面没有'/'字符。

我编写了一些Java代码来处理它,如下所示:

    String testText = "hello/,world,foo/,bar";
    String[] split = testText.split("[^/],");
    for(int i=0; i<split.length; i++)
    {
        System.out.println(split[i]);
    }

返回的结果是

字符串[0] =你好/,世界

字符串[1] = foo /,bar

这是不正确的,因为丢失了“世界”一词的“d”字符。
似乎在这种情况下,分隔符是某些字符,该字符不是/后跟',',这是可以理解的。
但是我想要类似“用定界符'分隔字符串,它仅跟随不是'/'字符的字符。所以适用于我的情况,中间仅','字符
的字符串将被分割,因此最终结果将是正确的,如下所示:

字符串[0] =你好/,世界

字符串[1] = foo /,bar

我意识到我可能必须重写我的正则表达式,但是我不知道该怎么做。
任何建议都将受到欢迎。

最佳答案

testText.split("(?<!/),");
后面使用负面表情
后面的否定条件确保/之前没有匹配的,

10-06 13:52
查看更多