먼저 불쌍한 영어에 대해 사과해야합니다. 내 경우를 설명해주십시오. 사용자가 입력 할 수있는 2 개의 텍스트 상자가 있다고 가정합니다. 서버 측에서는 두 개의 문자열을 ','문자로 구분 된 단일 문자열로 결합하려고합니다. 예를 들어, 사용자 이 첫 번째 텍스트 상자를 "hello world"로 입력하고 두 번째 텍스트 상자 "foo bar"를 입력하면 마지막 문자열은 "hello world, foo bar"여야합니다. 이 문자열은 다른 작업을 통해 해당 내용을 활용하려면 나중에 으로 분할해야합니다. 따라서 문자열이 분리되어 ','문자가 구분 기호로 사용되면 문자열은 [0] = "hello world" 문자열 [1] = "foo bar" 문자열이됩니다.정규 표현식을 사용하여 내 자신의 이스케이프 문자 처리
물론 이것은 사용자가 문자열에 ','문자를 입력하면 올바르게 분할 될 수없는 문자열에 이 나오기 때문에 취약합니다. 예를 들어 사용자가 첫 번째 텍스트 상자에 "hello, world"를 입력하고 두 번째 텍스트 상자에 "foo, bar"를 입력하면 최종 문자열은 "hello, world, foo, bar"가되고 분할 결과는 잘못 4 개의 분리 된 문자열이 될 수 있습니다.
나는 사용자 정의 이스케이프 문자를 생각해 냈습니다. 사용자가 ','문자를 입력하면 서버 측에 '/' 문자가 앞에 와야합니다. 예를 들어 사용자가 "hello, world"및 "foo, bar" 을 입력하면 정확한 문자열 인 이 알려져 있기 때문에 마지막 문자열은 이제 "hello /, world, foo /, bar"가됩니다. 그 앞에 '/'문자가없는 단일 ','문자. 다음
가 그것을 처리하는 일부 자바 코드를 썼다 가String testText = "hello/,world,foo/,bar";
String[] split = testText.split("[^/],");
for(int i=0; i<split.length; i++)
{
System.out.println(split[i]);
}
반환 된 결과이다
문자열 [0] = 헬로/WORL
문자열 [1] =/foo와 , bar
"world"단어의 'd'문자가 손실되기 때문에 올바르지 않습니다. 이 경우에 대한 구분 기호는 '/'다음에 오는 문자가 아니며 매우 이해하기 쉽습니다. 하지만 "/"문자가 아닌 문자 뒤에 오는 단락 기호로 문자열을 분할하는 것과 같은 것을 원합니다. 중간에있는 문자 만 ','내 문자에만 적용하십시오 문자열이 분할됩니다. 나는 내 정기를 다시 작성해야 할 수도 있습니다 실현
문자열 [0] = 안녕하세요/세계
문자열 [1] = foo는/바 다음과 같이 그래서 최종 결과는 정확합니다 표현 방법은 모르겠지만 어떻게해야할지 모르겠다. 어떤 제안이라도 환영 할 만하다 ..
문자열 결합을 피하십시오. 네가 뭔가 잘못 할 수있는 방법이 너무 많아. 예를 들어,'/'s를 이스케이프 처리해야합니다. 누군가 "hello /"및 "world"를 입력 할 수 있습니다. 그러면 'hello /, world'가됩니다. –
* "어떤 제안이라도 환영합니다."* 질문하십시오. –