✅ 1. PHP natsort 함수 설명
natsort()는 배열을 자연 정렬(Natural Order Sorting) 방식으로 정렬하는 함수입니다.
자연 정렬은 문자열 안에 포함된 숫자를 일반 문자 비교가 아닌 사람이 인지하는 숫자 크기 기준으로 정렬합니다.
예: "file2" < "file10"
일반 정렬(sort)이라면 "file10"이 "file2"보다 앞서지만, 자연 정렬은 숫자를 비교해 올바른 순서로 배치합니다.
- 정렬은 값(value) 기준이며, 키(key) 유지(Associative array keys 유지)
- ASCII 순서 정렬이 아닌 사람 친화적 정렬
✅ 2. PHP natsort 샘플 코드
<?php
$files = ["file10.txt", "file2.txt", "file1.txt", "file20.txt"];
natsort($files);
print_r($files);
?>
✅ 3. 샘플코드 사용 방법 및 Output
● 사용 방법
- 정렬할 문자열 배열을 준비한다.
- natsort() 함수를 호출하면 배열이 자연 정렬 방식으로 정렬된다.
- 키(index)는 유지된다.
- 출력하면 자연스러운 사람 중심의 정렬이 된다.
● 예상 Output
Array ( [2] => file1.txt [1] => file2.txt [0] => file10.txt [3] => file20.txt )
✅ 4. VB.NET 유사 기능 — Array.Sort + StrCmpLogicalW 사용
VB.NET에는 PHP natsort와 동일한 자연 정렬 내장 함수가 없지만
Windows API 함수 StrCmpLogicalW 를 사용하면 자연 정렬 효과를 얻을 수 있습니다.
✔ 설명
StrCmpLogicalW는 Windows Explorer에서 사용하는 자연 정렬 방식으로 문자열을 비교합니다.
✔ VB.NET 샘플 코드
Imports System.Runtime.InteropServices
Module Module1
<DllImport("shlwapi.dll", CharSet:=CharSet.Unicode)>
Private Function StrCmpLogicalW(x As String, y As String) As Integer
End Function
Sub Main()
Dim files = {"file10.txt", "file2.txt", "file1.txt", "file20.txt"}
Array.Sort(files, Function(a, b) StrCmpLogicalW(a, b))
For Each f In files
Console.WriteLine(f)
Next
End Sub
End Module
✔ Output
file1.txt file2.txt file10.txt file20.txt
✅ 5. C# 유사 기능 — 자연 정렬용 StrCmpLogicalW 사용
✔ 설명
C# 역시 기본적으로 자연 정렬이 없어 Windows API 호출을 통해 자연 정렬을 구현합니다.
✔ C# 샘플 코드
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string x, string y);
static void Main()
{
string[] files = { "file10.txt", "file2.txt", "file1.txt", "file20.txt" };
Array.Sort(files, (a, b) => StrCmpLogicalW(a, b));
foreach (var f in files)
Console.WriteLine(f);
}
}
✔ Output
file1.txt file2.txt file10.txt file20.txt
✅ 6. Python 유사 기능 — natsort 라이브러리 사용
Python은 기본 내장 함수만으로 자연 정렬이 어렵기 때문에
전용 라이브러리 natsort 를 주로 사용합니다.
✔ 설명
natsorted() 함수는 문자열에 포함된 숫자를 자동으로 감지해 자연 정렬을 수행합니다.
✔ Python 샘플 코드
from natsort import natsorted
files = ["file10.txt", "file2.txt", "file1.txt", "file20.txt"]
result = natsorted(files)
print(result)
✔ Output
['file1.txt', 'file2.txt', 'file10.txt', 'file20.txt']
✅ 7. JavaScript 유사 기능 — localeCompare + numeric: true 사용
JavaScript는 localeCompare에 numeric: true 옵션을 적용하면 자연 정렬이 가능합니다.
✔ 설명
localeCompare는 문자열 비교 시 숫자를 자연스럽게 비교하도록 지원합니다.
✔ JavaScript 샘플 코드
let files = ["file10.txt", "file2.txt", "file1.txt", "file20.txt"];
files.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
console.log(files);
✔ Output
["file1.txt", "file2.txt", "file10.txt", "file20.txt"]
'기술.이산이다' 카테고리의 다른 글
| 🚀 iOS 26.2 업데이트 총정리: Liquid Glass 디자인부터 Freeform 표 기능까지! (필수 확인) (0) | 2025.12.14 |
|---|---|
| 1인칭 비행의 짜릿함, FPV 드론 완벽 가이드: 종류부터 입문 팁까지 (0) | 2025.12.14 |
| array_multisort (0) | 2025.12.07 |
| array_diff_uassoc (0) | 2025.12.07 |
| 반도체 패권의 보이지 않는 방패: 포토레지스트(Photoresist) 완전 분석 (0) | 2025.12.04 |