programing

문자열에서 모든 공백 제거

padding 2023. 8. 26. 10:32
반응형

문자열에서 모든 공백 제거

문자열, 특히 전자 메일 주소의 공백을 모두 제거하기 위한 매크로를 만들었습니다.그러나 빈 공간의 약 95%만 제거하고 몇 개만 남깁니다.

내 코드:

Sub NoSpaces()
    Dim w As Range

    For Each w In Selection.Cells
        w = Replace(w, " ", "")
    Next
End Sub

제가 이 문제를 해결하기 위해 노력한 것은 다음과 같습니다.

공백이 코드 함수가 있는 공간임을 확인했습니다. 문자 32(공백)입니다.
대체 매크로와 함께 대체 매크로 사용
선행 및 후행 공백을 제거하기 위해 트림 기능을 활용하는 추가 매크로가 있어야 합니다.
깨지지 않는 공간을 테스트하기 위해 별도의 매크로를 만들었습니다(문자 160).
찾기 및 바꾸기 기능을 사용하여 공백을 검색하고 아무것도 없는 상태로 바꿉니다.작동 확인됨.

매크로를 실행할 때 셀을 하나만 선택합니다.Selection(선택)으로 인해 모든 셀을 선택하고 통과합니다.셀은 코드의 일부입니다.

몇 가지 예:

1 STAR MOVING @ ATT.NET
322 TRUCKING@GMAIL.COM
ALEZZZZ@AOL. COM. 

여기에는 일반 공백만 포함되지만 건너뜁니다.

그냥 정규식을 사용합니다.

'Add a reference to Microsoft VBScript Regular Expressions 5.5
Public Function RemoveWhiteSpace(target As String) As String
    With New RegExp
        .Pattern = "\s"
        .MultiLine = True
        .Global = True
        RemoveWhiteSpace = .Replace(target, vbNullString)
    End With
End Function

다음과 같이 부릅니다.

Sub NoSpaces()
    Dim w As Range

    For Each w In Selection.Cells
        w.Value = RemoveWhiteSpace(w.Value)
    Next
End Sub

사용해 보십시오.

Sub NoSpaces()
Selection.Replace " ", ""
End Sub

대체 예제 사용...= DUPLITE(C1:C18," ",")

당신이 가정하기 때문에Selection.Cells시트의 모든 셀을 포함합니다.

Cells.Replace " ", ""

그리고 모든 위대한 기여자들의 훌륭한 조언에 추가하기 위해, 시도해 보세요.

TRIM 또는 LTRIM 또는 RTRIM을 사용하면 다음 기능에 대해 자세히 알아볼 수 있습니다.

https://msdn.microsoft.com/en-us/library/office/gg278916.aspx

이제 포함된 공백(문자 사이의 공백)은 제거되지 않지만 선행 및 후행 공백은 제거됩니다.

이게 도움이 되길 바랍니다.

Excelok의 공간 문제, 내가 이 두 유형의 공간을 볼 수 있는 유일한 방법은 내가 만든 이 기능을 설명하기 위해 지금 여기서 하는 그들의 아스키 코드 값을 변환하는 것이며, 그것은 단지 내가 언급한 두 유형의 공간과 동일한지 여부를 문자 검사하여 문자열 문자를 필터링할 입니다.그렇지 않으면 해당 문자를 루프 후 최종 값이 되는 문자열로 연결합니다.이게 도움이 되길 바랍니다.감사해요.

Function spaceremove(strs) As String
Dim str As String
Dim nstr As String
Dim sstr As String
Dim x As Integer
str = strs

For x = 1 To VBA.Len(str)
    sstr = Left(Mid(str, x), 1)
    If sstr = " " Or sstr = " " Then
    Else
        nstr = nstr & "" & sstr
    End If

Next x
spaceremove = nstr
End Function

데이터가 포함된 HTML 테이블을 복사하여 엑셀에 붙여넣었지만 셀에 불필요한 공간이 가득 찼고 여기에 게시된 모든 메서드가 작동하지 않아 디버깅을 수행한 결과 실제로는 공백 문자(ASCII 32)가 아니라 공백 문자(ASCII 160) 또는 HTML이었습니다. 

깨지지 않는 우주 차로 작동하기 위해 저는 다음과 같이 했습니다.

Sub NoSpaces()
    Dim w As Range

    For Each w In Selection.Cells
        w.Value = Replace(w.Value, " ", vbNullString)
        w.Value = Replace(w.Value, Chr(160), vbNullString)
    Next
End Sub

언급URL : https://stackoverflow.com/questions/42306358/removing-all-spaces-in-string

반응형