문제

I've to face the following challenge which I would like to automatize using Regex:

I have to match this two mappings:

  1. GetSQLParameter("@switch", SqlDbType.TinyInt, 1), _ GetSQLParameter("@IDUtente", SqlDbType.Int), _

  2. sqlClient.AddParameterWithValue("switch", SqlDbType.TinyInt, user.IDUser); sqlClient.AddParameterWithValue("IDUtente", SqlDbType.Int, user.IDUser);

I would like to use 2 capturing group on the first code to get the name of the parameter and it's DB type.

Then I would like to analyze the second piece of code matching the name of the parameter and it's DB Type just to replace it.

Which kind of solution would you see as optimal to reach this objective?

I also asked for ready-made tools on our companion site Software Recommendations.

도움이 되었습니까?

해결책

Pseudo code

 # ==================================
 # GetSQLParameter\s*\(\s*"@\s*([^\s"]+)\s*"\s*,\s*([^,\s]+)\s*,

 GetSQLParameter \s* \( \s* 
 "@ \s* 
 ( [^\s"]+ )                 # (1), Param Name
 \s*
 "
 \s* , \s* 
 ( [^,\s]+ )                 # (2), DB Type
 \s* ,

 # Store:  
 # AryStruct['\1'].newName    = 'newname';
 # AryStruct['\1'].oldDBtype  = '\2';
 # AryStruct['\1'].newDBtype  = 'newtype';


 # ==================================
 # (sqlClient\.AddParameterWithValue\s*\(\s*"\s*)([^"\s]+)(\s*"\s*,\s*)([^,\s]+)(\s*,)

 (                           # (1 start)
      sqlClient \. AddParameterWithValue \s* \( \s* 
      " \s* 
 )                           # (1 end)
 ( [^"\s]+ )                 # (2), Param Name
 (                           # (3 start)
      \s* 
      "
      \s* , \s* 
 )                           # (3 end)
 ( [^,\s]+ )                 # (4), DB Type
 ( \s* , )                   # (5)

 # Replacement:   '\1' + AryStruct['\2'].newName + '\3' +  AryStruct['\2'].newDBtype + '\5' 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top