Jump to content

Recommended Posts

8 hours ago, czardas said:
#include <Array.au3>

Local $string = 'vXx2586578£&'
Local $aChars = StringSplit($string, "", 2)

_ArrayShuffle($aChars)

Local $sNewString
For $i = 0 To UBound($aChars) - 1
    $sNewString &= $aChars[$i]
Next
MsgBox(0, "New String", $sNewString)

 

Works perfectly, I had tried doing it this way but messed part of it up, thanks for clarification.

Link to post
Share on other sites
  • Moderators

A few less lines:

#include <Array.au3>

Local $string = 'vXx2586578£&'
Local $aChars = StringSplit($string, "", 2)

_ArrayShuffle($aChars)
MsgBox(0, "New String", StringReplace(_ArrayToString($aChars), "|", ""))

 

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to post
Share on other sites

Here the non array version:

Global $string='1234567890'

ConsoleWrite(ShuffleChars($string) & @CRLF)

Func ShuffleChars($sString, $iRounds = 1)
    Local $sTemp1, $sTemp2, $i, $j, $r, $t, $iLen, $rnd, $sLeft, $sMid, $sRight
    $iLen = StringLen($sString)
    For $r = 1 To $iRounds
        For $i = 1 To $iLen
            $j = $i
            $rnd = Random(1, $iLen, 1)
            If $rnd = $i Then ContinueLoop
            If $j < $rnd Then
                $t = $j
                $j = $rnd
                $rnd = $t
            EndIf
            $sTemp1 = StringMid($sString, $rnd, 1)
            $sTemp2 = StringMid($sString, $j, 1)
            $sLeft = StringMid($sString, 1, $rnd - 1)
            $sMid = StringMid($sString, $rnd + 1, $j - $rnd - 1)
            $sRight = StringMid($sString, $j + 1)
            $sString = $sLeft & $sTemp2 & $sMid & $sTemp1 & $sRight
        Next
    Next
    Return $sString
EndFunc

 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites

meant to post this here not in JG's example

-with powershell

#include<AutoItConstants.au3>
#include <Array.au3>

$Str = "shuffling"

$iPID = run("powershell -join ('" & _ArrayToString(stringsplit($Str , "" , 2) , "','") & "' | Get-Random -Count " & StringLen($Str) & ")" , "" , @SW_HIDE , $stdout_child)

$sOutput = ""

     While 1
        $sOutput &= StdoutRead($iPID)
        If @error Then ExitLoop
        WEnd

msgbox(0, '' , $sOutput)

 

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Link to post
Share on other sites
  • Moderators

AutoIt is like Burger King, you get so many great ways of doing things, you can have it your way :D

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to post
Share on other sites

The one time i would have used the delete button properly...

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Link to post
Share on other sites

Hello I did this just for fun. it's based on swapping.

 

Local $string = 'vXx2586578£&'

ConsoleWrite(_StringShuffle($string) & @CRLF)
ConsoleWrite(_StringShuffle($string) & @CRLF)

Func _StringShuffle($sString)
Local $iRnd1 = 0
Local $iRnd2 = 0
Local $sChar1 = ""
Local $sChar2 = ""
Local $iMax = StringLen($sString)
For $i = 1 To $iMax
    $iRnd1 = Random(1, $iMax, 1)
    $iRnd2 = Random(1, $iMax, 1)
    $sChar1 = StringMid($sString, $iRnd1, 1)
    $sChar2 = StringMid($sString, $iRnd2, 1)
    $sString = StringReplace($sString, $iRnd1, $sChar2)
    $sString = StringReplace($sString, $iRnd2, $sChar1)
Next
Return $sString
EndFunc

Saludos

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By cruisepandey
      Hi, 
      I have a string like this : 
      Global $Msga = "urrent directory is /send.  (Submission of file with log number 29381077284 is confirmed)";
      I want to extract the number 29381077284  from the string. I did StringSplit to split based on "(" and then use space to reach there, But it's not a good choice. 
      Can anyone help me with regular expression to find the number from String using AutoIT. TIA
    • By DannyJ
      I have this example string:
       
      2020-06-08 09:23:33 : abcdefghifjklm How to trim just the right part? Or how to trim this text right to left?
      I want to trim this string right to left until ' : '.
      In ohter words: I need the 'abcdefghifklm' text.
      I have tried StringTrimRight, but that requires 
      The number of characters to trim. Unfortunately StringSplit trims the left part of the strings.
       
       
    • By careca
      This is my take on string triggers, triggers on specific strings.
      Able to simple text pasting,
      opening links (as long as there's a www. http:\\ or https:\\ at the beggining)
      and is able to open applications, if there is a parameter in the parameter field, it uses it.
      Shows your external, lan, and gateway ip's.
      Able to change system volume by a set percentage, reading from the inputbox the number the user sets, if 0 or empty uses system default.
      I made this because the existing string trigger applications didn't do it for me.
      I did this for me, but if someone finds it useful, all the better.
    • By Colduction
      Hi guys!, i have a problem to convert Python code to AutoIt code, in fact i had not coded with Python yet!, this code is about permutation a string's case, i will be happy with your comments :)❤;

      Python code:
       
      # Python code to print all permutations # with respect to cases # Function to generate permutations def permute(inp): n = len(inp) # Number of permutations is 2^n mx = 1 << n # Converting string to lower case inp = inp.lower() # Using all subsequences and permuting them for i in range(mx): # If j-th bit is set, we convert it to upper case combination = [k for k in inp] for j in range(n): if (((i >> j) & 1) == 1): combination[j] = inp[j].upper() temp = "" # Printing current combination for i in combination: temp += i print(temp), # Driver code permute("Hello") # This code is contributed by Sachin Bisht
      My code in AutoIt:
      ; https://www.geeksforgeeks.org/permute-string-changing-case/ _PermuteCase("ABC") Func _PermuteCase($sText) If StringRegExp($sText, "^[A-Za-z]{1,}$") Then Local $iLength = StringLen($sText) ; Get length of the text. Local $iMaxPerm = 2 ^ $iLength ; Number of permutations is 2^n Local $sLow_Text = StringLower($sText) ; Converting string to lower case Local $asChrs = StringToASCIIArray($sLow_Text) ; Split the text into array of chars. For $i = 1 To $iMaxPerm Step 1 For $j = 0 To $asChrs[0] ;................................................... Next Next Else Return SetError(-1, 0, "Error: Input is incorrect!") EndIf EndFunc ;==>_PermuteCase  
       
       
       
       
       
      ====================== SOLUTION by @TheXman ======================
       
    • By jmp
      i am trying to get number from string using this code :
      #include <IE.au3> $oIE = _IEAttach ("Edu.corner") Local $aName = "Student name & Code:", $iaName = "0" Local $oTds = _IETagNameGetCollection($oIE, "td") For $oTd In $oTds If $oTd.InnerText = $aName Then $iaName = $oTd.NextElementSibling.InnerText $iGet = StringRegExpReplace($iaName, "\D", "") EndIf Next MsgBox(0, "", $iGet) it was get number like 52503058
      But, I want to get only student code 5250. (Different student have different code, sometime its 3 digits, Sometime 4)

       
×
×
  • Create New...