如何将文本行转换为变量?

时间:2016-03-16 23:42:38

标签: variables variable-assignment autoit bulk

结帐this list。我需要将每个变成变量并设置为0.示例:

;1-Methyoxy-2-Propanol would be:
$OneMethoxyTwoPropanol = 0

;and 1,2-BUTADIENE would be:
$OneTwoButadiene = 0

将它们分配给变量不会有问题,但有1500个。

5 个答案:

答案 0 :(得分:0)

如果我必须做这项工作,我会这样做:

  • 我会改变每个单词的大小写:

Regex to change to sentence case

  • 制作“SearchAndReplace”:

      

    1 - >一个

         

    2 - >两个

         

    ...

         

    {underscore} - > ''

         

    {space} - > ''

         

    ...

  • 然后在类似SublimeText的软件中,我会在每行前面添加$,在最后添加= 0。在Ctrl+Shift+L

  • 的帮助下

也许您可以使用正则表达式来帮助您完成“SearchAndReplace”事务。

答案 1 :(得分:0)

这样的东西?

Local $sFilePath = @DesktopDir & "\test.ini"
Local $aArray = IniReadSection($sFilePath, "Variables")
Local $aVariablesArray[UBound($aArray)][2]

For $i = 1 To $aArray[0][0]
    $aVariablesArray[$i][0] = $aArray[$i][0]
    $aVariablesArray[$i][1] = $aArray[$i][1]
Next

For $i = 1 To UBound($aVariablesArray) -1
    MsgBox(0, "", "Variable: " & $aVariablesArray[$i][0] & @CRLF & "Value: " & $aVariablesArray[$i][1])
Next

您的ini文件应如下所示

[Variables]
firstvariable=0
secondvariable=0
etc...=0

要创建一个刚刚打开记事本的ini文件,请记下该文件,然后将其保存为.ini。

您可以使用RegEx根据需要重命名每个文件。 创建的数组是一个二维数组。需要存储变量的名称和值。

答案 2 :(得分:0)

  

我只需要将它们变成一个变量并将它们设置为0。

根据Documentation - Intro - Arrays

  

Array是一个包含一系列数据元素的变量。此变量中的每个元素都可以通过索引号访问,该索引号与数组中元素的位置相关 - 在AutoIt中,Array的第一个元素始终是元素[0]。数组元素以定义的顺序存储,可以进行排序。

删除包含列表名称(; List I等)和空(或少于三个字符)行的行(按照$g_sRegexFilter)。将剩余行存储到2D数组元素。例如:

#include <StringConstants.au3>
#include <FileConstants.au3>
#include <Array.au3>

Global Enum  $ITEM_NAME, _
             $ITEM_VALUE

Global Const $g_sFilePath    = 'C:\list.txt'
Global Const $g_sFileNewline = @CRLF
Global Const $g_sRegexFilter = '(?m)^(.{0,2}\v)|(;.*\v)$'
Global Const $g_sItemHeader  = 'name|value'

Global       $g_sFileText    = ''
Global       $g_aFileItems

$g_sFileText  = _TextFromFile($g_sFilePath)
$g_sFileText  = StringRegExpReplace($g_sFileText, $g_sRegexFilter, '')
$g_aFileItems = StringSplit($g_sFileText, $g_sFileNewline, $STR_ENTIRESPLIT + $STR_NOCOUNT)
_ArrayColInsert($g_aFileItems, $ITEM_VALUE)

For $i1 = 0 To UBound($g_aFileItems) - 1
    $g_aFileItems[$i1][$ITEM_VALUE] = 0
Next

_ArrayDisplay($g_aFileItems, '$g_aFileItems', '', 0, Default, $g_sItemHeader)

Func _TextFromFile(Const $sFile)
    Local       $hFile = FileOpen($sFile, $FO_READ + $FO_UTF8_NOBOM)
    Local Const $sData = FileRead($hFile)

    FileClose($hFile)
    Return $sData
EndFunc

返回:

1-Methoxy-2-Propanol      | 0
1,2-BUTADIENE             | 0
2-Diethyl aminoethanol    | 0
2-ETHYL HEXANOL           | 0
2-ETHYL HEXYL ACRYLATE    | 0
2-Ethyl hexyl lights      | 0
2-Ethyl phenol            | 0
2-Ethylsuccionitrile      | 0
2-Methyl piperidine       | 0
2-Methyl-2-Butene nitrile | 0
2-Methyl-2-Pentenal       | 0
2-Methyl-3-Butene nitrile | 0
2-Methylglutaronitrile    | 0
...

如:

$g_aFileItems[ x ][$ITEM_NAME]
$g_aFileItems[ x ][$ITEM_VALUE]

使用_ArrayColInsert()添加其他列。

  

......因为有1500个。

考虑使用SQLiteRelated

答案 3 :(得分:0)

stringreplace和assign将完成这项工作。如果单词替换的数量变得太大,您可以考虑存储那些而不是嵌套替换函数。

$sStr = "1-Methyoxy-2-Propanol" & @LF & "1,2-BUTADIENE"

$sStr = stringreplace(stringreplace(stringreplace(stringreplace($sStr , "," , "-") , "1-" , "One") , "2-" , "Two") , "-" , "")

$aStr = stringsplit($sStr , @LF , 2)

    For $i = 0 to ubound($aStr) - 1
        Assign($aStr[$i] , 0)
    Next

msgbox(0, '' , Eval("OneMethyoxyTwoPropanol") & @LF & Eval("OneTwoBUTADIENE"))

答案 4 :(得分:-1)

我正在使用Notepad ++,所以我不确定这是否适用于任何其他IDE / Notepads。我将在以下示例中使用1-Methoxy-2-Propanol

  1. 我学会了不用数字启动变量,所以我需要用单词替换它们。 1-Methoxy-2-Propanol包含12,我们需要将其更改为OneTwo。 开始产品:

    1-Methoxy-2-Propanol
    
  2. Ctrl + F 并移至替换标签。在“查找内容:”框中,键入1。在“替换为:”框中,键入One,然后按“全部替换”(不仅仅是“替换”)。对数字零(0)到九(9)执行此操作。现在,您的产品将如下所示:

    One-Methoxy-Two-Propanol
    
  3. 接下来我们需要摆脱破折号。在“替换”选项卡的“查找内容:”框内,键入-并在“替换为:”框中,完全退格,以便没有任何内容,然后按“全部替换”。现在,您的产品将如下所示:

    OneMethoxyTwoPropanol
    
  4. 还有其他产品包括昏迷和括号,所以只需找到并替换上述内容即可。

  5. 我们需要在每个单词的开头添加$。再次按 Ctrl + F 并转到“替换”选项卡。在“查找内容:”框中,键入^,它表示新行的开头。在“替换为:”框中,键入$并按“全部替换”。这将使您的产品看起来像:

    $OneMethoxyTwoPropanol
    
  6. 我们需要将所有这些变量设置为零!返回替换选项卡。在“查找内容:”框中键入\r。在“替换为:”框中,键入= 0。注意等号前的空格。按“全部替换”。您的产品将如下所示:

    $OneMethoxyTwoPropanol = 0
    
  7. 您的文件应该像这样开始:

    1-Methoxy-2-Propanol
    1,2-BUTADIENE
    2-Diethyl aminoethanol
    2-ETHYL HEXANOL
    2-ETHYL HEXYL ACRYLATE
    2-Ethyl hexyl lights
    2-Ethyl phenol
    2-Ethylsuccionitrile
    2-Methyl piperidine
    2-Methyl-2-Butene nitrile
    2-Methyl-2-Pentenal
    2-Methyl-3-Butene nitrile
    2-Methylglutaronitrile
    2-Pentene nitrile
    2,4,7,9-Tetramethyl-5-decyne-4
    

    结束了这样:

    $OneMethoxyTwoPropanol = 0
    $OneTwoBUTADIENE = 0
    $TwoDiethylaminoethanol = 0
    $TwoETHYLHEXANOL = 0
    $TwoETHYLHEXYLACRYLATE = 0
    $TwoEthylhexyllights = 0
    $TwoEthylphenol = 0
    $TwoEthylsuccionitrile = 0
    $TwoMethylpiperidine = 0
    $TwoMethylTwoButenenitrile = 0
    $TwoMethylTwoPentenal = 0
    $TwoMethylThreeButenenitrile = 0
    $TwoMethylglutaronitrile = 0
    $TwoPentenenitrile = 0
    $TwoFourSevenNineTetramethylFivedecyneFour = 0