JS 去除特殊符號,僅保留英文、數字、中文,適用陣列、物件、純字串。

在文字處理或資料清理時,常常需要移除字串中的特殊符號,只保留英文、數字和中文字符。使用 JavaScript 來做,分別針對字串、陣列和物件進行處理。

1. 移除【字串】中的特殊符號

如何從字串中移除所有的特殊符號。以下是相應的 JavaScript

function removeSpecialCharacters(str) {
    const regex = /[^\w\u4e00-\u9fa5\s]/g;
    return str.replace(regex, '');
}

// 測試範例
const sampleString = 'Hello@世界123!';
const cleanString = removeSpecialCharacters(sampleString);
console.log(cleanString); // 輸出: Hello世界123

使用正則表達式將字串中的所有非字母、數字、中文字符和空白字符移除。範例中的字串 “Hello@世界123!” 經過處理後,輸出為 “Hello世界123″。

2. 移除【陣列】中所有字串值的特殊符號

處理包含字串的陣列。如何遞迴處理陣列中的每個字串值,並移除特殊符號:

function removeSpecialCharactersFromArray(arr) {
    const regex = /[^\w\u4e00-\u9fa5\s]/g;

    return arr.map(item => {
        if (typeof item === 'string') {
            return item.replace(regex, '');
        } else if (Array.isArray(item)) {
            return removeSpecialCharactersFromArray(item);
        } else if (typeof item === 'object' && item !== null) {
            const result = {};
            for (let key in item) {
                if (item.hasOwnProperty(key)) {
                    result[key] = typeof item[key] === 'string'
                        ? item[key].replace(regex, '')
                        : item[key];
                }
            }
            return result;
        }
        return item;
    });
}

// 測試範例
const sampleArray = [
    'Hello@世界123!',
    123,
    ['Nested#String!'],
    { name: 'John$Doe!', age: 30 }
];

const cleanArray = removeSpecialCharactersFromArray(sampleArray);
console.log(cleanArray); // 輸出: ['Hello世界123', 123, ['NestedString'], { name: 'JohnDoe', age: 30 }]

遍歷陣列的所有元素,並將每個字串值中的特殊符號移除。對於巢狀陣列和物件,也會遞迴進行處理。

3. 移除【物件】中所有字串值的特殊符號

處理物件中的字串值。將遞迴遍歷物件的所有屬性,並移除每個字串值中的特殊符號:

function removeSpecialCharactersFromObject(obj) {
    const regex = /[^\w\u4e00-\u9fa5\s]/g;

    const cleanObject = (input) => {
        if (typeof input === 'string') {
            return input.replace(regex, '');
        } else if (Array.isArray(input)) {
            return input.map(cleanObject);
        } else if (typeof input === 'object' && input !== null) {
            const result = {};
            for (let key in input) {
                if (input.hasOwnProperty(key)) {
                    result[key] = cleanObject(input[key]);
                }
            }
            return result;
        }
        return input;
    };

    return cleanObject(obj);
}

// 測試範例
const sampleObj = {
    name: 'John@Doe!',
    age: 30,
    address: {
        city: 'New-York#City',
        zip: '10001!'
    },
    hobbies: ['Reading$', 'Traveling@']
};

const cleanObj = removeSpecialCharactersFromObject(sampleObj);
console.log(cleanObj); 
// 輸出: { name: 'JohnDoe', age: 30, address: { city: 'NewYorkCity', zip: '10001' }, hobbies: ['Reading', 'Traveling'] }

遞迴處理物件中的每個屬性,確保所有字串值中的特殊符號都被移除。

發表迴響