2012-04-22 3 views
3

면책 조항 : 99 %의 경우 연결된 문자열에서 데이터를 "직렬화"해서는 안된다는 사실을 알고 있습니다. |의 경우 대부분에서String.Split에 가장 적합한 문자는 무엇입니까?

string str = userId +"-"+ userName; 

내가 다시 떨어졌다 :

너희들은 잘 알려진 상황에서 사용 무엇을 숯불 (파이프)하지만, 어떤 경우에는 사용자가 그것을 입력합니다. ☼ (ALT + 9999)와 같은 "non-typable"문자는 어떻습니까?

+1

이유를 설명 할 수 있습니까? 정말 나쁜 생각처럼 냄새가납니다. – JohnFx

+0

일부 데이터를 암호화하여 네트워크를 통해 HTTP를 사용하여 모바일 앱으로 보내고 싶다고 가정 해 보겠습니다. 멋진 직렬화 프레임 워크를 설치할 시간이 없으며 최대한 빨리 실행하고 싶습니다 ... 즉 Context.Write (Encrypt ("Param1 | Param2 | Param3")) – kape123

+0

을 사용하는 방법은 다음과 같습니다. 휠 : http://www.c-sharpcorner.com/UploadFile/bipinjoshi/serializingObjectsinCS11102005234746PM/serializingObjectsinCS.aspx 죄송합니다. 채팅 할 시간이 없습니다. 잠자리에 드는 시간입니다. – JohnFx

답변

6

구체적인 답변을 제공하는 요인은 너무 많습니다.

입니까? 이러한 방식으로 userIduserName을 결합하여 저장할 필요성을 느낀다면 다른 방법을 고려해보십시오. CSV 스타일의 인용문 또는 이와 유사한 문구.

두 번째로 정상적인 상황에서는 문자열의 일부가 아닌 구분 기호 만 사용해야합니다. userId가 숫자 일 경우 "-"는 괜찮지 만 숫자가 음수이면 어떻게 될까요?

셋째, 문자열을 사용하여 수행 할 계획에 따라 다릅니다. 단순히 로깅이나 디버거 또는 다른 형태의 사람이 소비하는 것이라면, 그것에 대해 약간의 긴장을 풀고 적절한 것으로 보이는 구분 기호를 선택하면됩니다. 이와 같은 데이터를 저장하려면 userId 또는 userName 값에 관계없이 나중에 데이터를 올바르게 추출 할 수 있도록 구분 기호를 사용하십시오. 도망 갈 수 있다면 예를 들어 \0을 사용하십시오. 두 값 중 하나가 신뢰할 수없는 출처 (예 : 인터넷)에서 발생한 경우 구분 기호를 두 문자열 중 하나의 문자로 사용할 수 없도록해야합니다. 일반적으로 각각 포함 된 문자 (예 : userId의 자릿수 및 문자, 자릿수 및 일부 구두점 문자는 userName)를 제한합니다.

+0

흠 ... 예 \ 0은 괜찮습니다. 나는 사람들이 추천하는 것이 무엇인지, 호기심이 무엇인지, 자신의 소매를 가지고있는 것과 관련하여 어떤 트릭을 추천하는지 궁금하다. – kape123

4

데이터 저장 및 검색을 위해 사용자가 구분 문자를 문자열에 삽입하는 방법을 찾지 못하도록 보장 할 방법이 없습니다.

  • 가하는 -가 입력에서 발생하면 -는 특수 문자를
  • 을하자 -0 같은로 대체 : 할 수있는 안전한 것은 어떻게 든 입력 전처리이다. 당신의 구분 기호로
  • 사용 --

그래서 userid = "alpha-dog"userName = "papa--0bear"

alpha-0dog--papa-0-00bear 

로 번역 할 것이다 중요한 것은 당신의 계획을 완벽하게 취소 할 필요가, 사용자가되어서는 안된다는 것입니다 그들이 무엇을 입력하든, 그것을 깰 수 있습니다.

기본적으로 이것은 원시적 인 버전의 위생 처리입니다.

관련 문제