TheDcoder Posted January 2, 2015 Share Posted January 2, 2015 Hello! docxFiles = _FileListToArray('e:\files\documents', '*.docx', 1) For $i = 1 To UBound($docxFiles) - 1 GUICtrlSetData($listDocx, $docxFiles[$i]) Next ;listDocx = controlID of the combo list I want to chop off the .docx at the end, How can I? EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted January 2, 2015 Moderators Share Posted January 2, 2015 GUICtrlSetData($listDocx, StringRegExpReplace($docxFiles[$i], "(.+?)(\.\w+)\z", "$1")) Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
TheDcoder Posted January 2, 2015 Author Share Posted January 2, 2015 GUICtrlSetData($listDocx, StringRegExpReplace($docxFiles[$i], "(.+?)(\.\w+)\z", "$1")) Will it chop off anything after a "." (full-stop or point) ?? Ex: file is "my.document.docx" will be "my"? EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted January 2, 2015 Moderators Share Posted January 2, 2015 (edited) TheDcoder, you always ask questions that would simply be answered by taking less time to post here than to test it. So... Global $szMyStr = "my.document.docx" ConsoleWrite(StringRegExpReplace($szMyStr, "(.+?)(\.\w+)\z", "$1") & @CRLF) Test it... Edit: I could almost see you asking if I had done something like this though: Global $szMyStr = "my.document.docx" ConsoleWrite(_stripExtension($szMyStr) & @CRLF) Func _stripExtension($sStr) Return Execute(BinaryToString("0x537472696E675265674578705265706C6163" & _ "652824735374722C2022282E2B3F29285C2E5C772B295C7A222C202224312229")) EndFunc Edited January 2, 2015 by SmOke_N Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
TheDcoder Posted January 2, 2015 Author Share Posted January 2, 2015 TheDcoder, you always ask questions that would simply be answered by taking less time to post here than to test it. So... Global $szMyStr = "my.document.docx" ConsoleWrite(StringRegExpReplace($szMyStr, "(.+?)(\.\w+)\z", "$1") & @CRLF) Test it... I could test it but it will help googlers EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
czardas Posted January 2, 2015 Share Posted January 2, 2015 I think a better question would be: How does that regular expression work? There are two groups: (.+?) ..... any characters repeated any number of times in any order. (.w+)z ..... one dot followed by any word characters until the end of the string. Googlers can fathom it out for themselves. TheDcoder 1 operator64 ArrayWorkshop Link to comment Share on other sites More sharing options...
mikell Posted January 2, 2015 Share Posted January 2, 2015 Short way StringRegExpReplace($szMyStr, "\.\w+$", "") Link to comment Share on other sites More sharing options...
iamtheky Posted January 2, 2015 Share Posted January 2, 2015 #include<array.au3> #include<file.au3> $extension = ".docx" $docxFiles = _FileListToArray('e:\files\documents', '*' & $extension, 1) For $i = 1 To UBound($docxFiles) - 1 $docxFiles[$i] = stringreplace($docxFiles[$i] , $extension , "") Next _ArrayDisplay($docxFiles) ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
mikell Posted January 2, 2015 Share Posted January 2, 2015 $file = "my.document.docxformat.bak" $extension = ".docx" Msgbox(0,"", $file & @crlf & stringreplace($file, $extension , "")) Link to comment Share on other sites More sharing options...
iamtheky Posted January 2, 2015 Share Posted January 2, 2015 an edge case that wont be realized given the _FileListToArray parameters. ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
TheDcoder Posted January 2, 2015 Author Share Posted January 2, 2015 NOTE: I am no professional, i can't understand all of the code you guys put in here EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
TheDcoder Posted January 3, 2015 Author Share Posted January 3, 2015 Hello again, i am having a difficult time with StringRegExpReplace, i want to convert File Path to File name Here is a piece of code from my project $locationOfFile = FileOpenDialog("Select Document", @DocumentsCommonDir, "Word File (*.docx)", $FD_FILEMUSTEXIST + $FD_PATHMUSTEXIST) $nameOfFile = StringRegExpReplace($locationOfFile, ) I can understand how to set the pattern.... Thanks again for the help! EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
Moderators Solution Melba23 Posted January 3, 2015 Moderators Solution Share Posted January 3, 2015 TheDcoder,I have been using these for some years to extract drive/path/name/ext information: expandcollapse popup; Credit Malkey Local $sFile = "C:\Program Files\Another Dir\AutoIt3\AutoIt3.chm" ; Drive letter - Example returns "C" Local $sDrive = StringRegExpReplace($sFile, ":.*$", "") ; Full Path with backslash - Example returns "C:\Program Files\Another Dir\AutoIt3\" Local $sPath = StringRegExpReplace($sFile, "(^.*\\)(.*)", "\1") ; Full Path without backslash - Example returns "C:\Program Files\Another Dir\AutoIt3" Local $sPathExBS = StringRegExpReplace($sFile, "(^.*)\\(.*)", "\1") ; Full Path w/o drive letter with backslash - Example returns "\Program Files\Another Dir\AutoIt3\" Local $sPathExDr = StringRegExpReplace($sFile, "(^.:)(\\.*\\)(.*$)", "\2") ; Path w/o drive letter w/o backslash - Example returns "Program Files\Another Dir\AutoIt3" Local $sPathExDrBS = StringRegExpReplace($sFile, "(^.:\\)(.*)(\\.*$)", "\2") ; File name with ext - Example returns "AutoIt3.chm" Local $sFileName = StringRegExpReplace($sFile, "^.*\\", "") ; File name w/o ext - Example returns "AutoIt3" Local $sFilenameExExt = StringRegExpReplace($sFile, "^.*\\|\..*$", "") ; Dot Ext - Example returns ".chm" Local $sDotExt = StringRegExpReplace($sFile, "^.*\.", ".$1") ; Ext - Example returns "chm" Local $sExt = StringRegExpReplace($sFile, "^.*\.", "") MsgBox(0, "Path File Name Parts", _ "Drive " & @TAB & $sDrive & @CRLF & _ "Path " & @TAB & $sPath & @CRLF & _ "Path w/o\ " & @TAB & $sPathExBS & @CRLF & _ "Path w/o Drv " & @TAB & $sPathExDr & @CRLF & _ "Path w/o Drv or \ " & @TAB & $sPathExDrBS & @CRLF & _ "File Name " & @TAB & $sFileName & @CRLF & _ "File Name w/o Ext " & @TAB & $sFilenameExExt & @CRLF & _ "Dot Extension " & @TAB & $sDotExt & @CRLF & _ "Extension " & @TAB & $sExt & @CRLF)M23 TheDcoder 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
TheDcoder Posted January 3, 2015 Author Share Posted January 3, 2015 TheDcoder, I have been using these for some years to extract drive/path/name/ext information: expandcollapse popup; Credit Malkey Local $sFile = "C:\Program Files\Another Dir\AutoIt3\AutoIt3.chm" ; Drive letter - Example returns "C" Local $sDrive = StringRegExpReplace($sFile, ":.*$", "") ; Full Path with backslash - Example returns "C:\Program Files\Another Dir\AutoIt3\" Local $sPath = StringRegExpReplace($sFile, "(^.*\\)(.*)", "\1") ; Full Path without backslash - Example returns "C:\Program Files\Another Dir\AutoIt3" Local $sPathExBS = StringRegExpReplace($sFile, "(^.*)\\(.*)", "\1") ; Full Path w/o drive letter with backslash - Example returns "\Program Files\Another Dir\AutoIt3\" Local $sPathExDr = StringRegExpReplace($sFile, "(^.:)(\\.*\\)(.*$)", "\2") ; Path w/o drive letter w/o backslash - Example returns "Program Files\Another Dir\AutoIt3" Local $sPathExDrBS = StringRegExpReplace($sFile, "(^.:\\)(.*)(\\.*$)", "\2") ; File name with ext - Example returns "AutoIt3.chm" Local $sFileName = StringRegExpReplace($sFile, "^.*\\", "") ; File name w/o ext - Example returns "AutoIt3" Local $sFilenameExExt = StringRegExpReplace($sFile, "^.*\\|\..*$", "") ; Dot Ext - Example returns ".chm" Local $sDotExt = StringRegExpReplace($sFile, "^.*\.", ".$1") ; Ext - Example returns "chm" Local $sExt = StringRegExpReplace($sFile, "^.*\.", "") MsgBox(0, "Path File Name Parts", _ "Drive " & @TAB & $sDrive & @CRLF & _ "Path " & @TAB & $sPath & @CRLF & _ "Path w/o\ " & @TAB & $sPathExBS & @CRLF & _ "Path w/o Drv " & @TAB & $sPathExDr & @CRLF & _ "Path w/o Drv or \ " & @TAB & $sPathExDrBS & @CRLF & _ "File Name " & @TAB & $sFileName & @CRLF & _ "File Name w/o Ext " & @TAB & $sFilenameExExt & @CRLF & _ "Dot Extension " & @TAB & $sDotExt & @CRLF & _ "Extension " & @TAB & $sExt & @CRLF) M23 Thank you very very very much!!!!!!!!!!!!!!!!! EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
mikell Posted January 3, 2015 Share Posted January 3, 2015 Melba, Local $sFile = "C:\Program Files\Another Dir\AutoIt3\AutoIt.3.chm" ; Dot Ext - Example returns ".chm" Local $sDotExt = StringRegExpReplace($sFile, "^.*\.", ".$1$1$1$1$1$1$1") MsgBox(0,"", $sDotExt) Link to comment Share on other sites More sharing options...
TheDcoder Posted January 3, 2015 Author Share Posted January 3, 2015 Melba, Local $sFile = "C:\Program Files\Another Dir\AutoIt3\AutoIt.3.chm" ; Dot Ext - Example returns ".chm" Local $sDotExt = StringRegExpReplace($sFile, "^.*\.", ".$1$1$1$1$1$1$1") MsgBox(0,"", $sDotExt) EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
mikell Posted January 3, 2015 Share Posted January 3, 2015 Please don't care, it was only a joke for Melba I only meant that here there is no backreference in the expression, so "$0" returns the whole content of the expression and $1, $2, etc are empty Local $sFile = "C:\Program Files\Another Dir\AutoIt3\AutoIt3.chm" Local $sDotExt = StringRegExpReplace($sFile, "^.*\.", ".$1$2$3 (the dot only is returned), \$0 = ""$0"", remains: ") MsgBox(0,"", $sDotExt) So this suffices : ; Dot Ext - Example returns ".chm" Local $sDotExt = StringRegExpReplace($sFile, "^.*\.", ".") Link to comment Share on other sites More sharing options...
TheDcoder Posted January 4, 2015 Author Share Posted January 4, 2015 Please don't care, it was only a joke for Melba I only meant that here there is no backreference in the expression, so "$0" returns the whole content of the expression and $1, $2, etc are empty Local $sFile = "C:\Program Files\Another Dir\AutoIt3\AutoIt3.chm" Local $sDotExt = StringRegExpReplace($sFile, "^.*\.", ".$1$2$3 (the dot only is returned), \$0 = ""$0"", remains: ") MsgBox(0,"", $sDotExt) So this suffices : ; Dot Ext - Example returns ".chm" Local $sDotExt = StringRegExpReplace($sFile, "^.*\.", ".") oh, ok EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted January 4, 2015 Moderators Share Posted January 4, 2015 TheDcoder,When you reply, please use the "Reply to this topic" button at the top of the thread or the "Reply to this topic" editor at the bottom rather than the "Quote" button - we know what we wrote and it just pads the thread unnecessarily. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
TheDcoder Posted January 4, 2015 Author Share Posted January 4, 2015 k EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now