diff --git a/src/tools/list-converter/list-converter.models.test.ts b/src/tools/list-converter/list-converter.models.test.ts
index abbc43c2..d6c87773 100644
--- a/src/tools/list-converter/list-converter.models.test.ts
+++ b/src/tools/list-converter/list-converter.models.test.ts
@@ -11,6 +11,8 @@ describe('list-converter', () => {
removeDuplicates: true,
itemPrefix: '"',
itemSuffix: '"',
+ removeItemPrefix: '',
+ removeItemSuffix: '',
listPrefix: '',
listSuffix: '',
reverseList: false,
@@ -36,6 +38,8 @@ describe('list-converter', () => {
removeDuplicates: true,
itemPrefix: '',
itemSuffix: '',
+ removeItemPrefix: '',
+ removeItemSuffix: '',
listPrefix: '',
listSuffix: '',
reverseList: false,
@@ -52,6 +56,8 @@ describe('list-converter', () => {
trimItems: true,
itemPrefix: '
',
itemSuffix: '',
+ removeItemPrefix: '',
+ removeItemSuffix: '',
listPrefix: '',
keepLineBreaks: true,
@@ -72,5 +78,34 @@ describe('list-converter', () => {
`;
expect(convert(input, options)).toEqual(expected);
});
+
+ it('should remove prefix and suffix', () => {
+ const options: ConvertOptions = {
+ separator: '',
+ trimItems: true,
+ itemPrefix: '',
+ itemSuffix: '',
+ removeItemPrefix: '\',
+ removeItemSuffix: '\',
+ listPrefix: '',
+ listSuffix: '',
+ keepLineBreaks: true,
+ lowerCase: false,
+ removeDuplicates: false,
+ reverseList: false,
+ sortList: null,
+ };
+ const input = `
+1
+2
+3
+ `;
+ const expected = `
+1
+2
+3
+`;
+ expect(convert(input, options)).toEqual(expected);
+ });
});
});
diff --git a/src/tools/list-converter/list-converter.models.ts b/src/tools/list-converter/list-converter.models.ts
index 548baa28..5c047293 100644
--- a/src/tools/list-converter/list-converter.models.ts
+++ b/src/tools/list-converter/list-converter.models.ts
@@ -20,6 +20,8 @@ function convert(list: string, options: ConvertOptions): string {
.thru(whenever(!_.isNull(options.sortList), parts => parts.sort(byOrder({ order: options.sortList }))))
.map(whenever(options.trimItems, _.trim))
.without('')
+ .map(p => options.removeItemPrefix ? p.replace(new RegExp(`^${options.removeItemPrefix}`, 'g'), '') : p)
+ .map(p => options.removeItemSuffix ? p.replace(new RegExp(`${options.removeItemSuffix}$`, 'g'), '') : p)
.map(p => options.itemPrefix + p + options.itemSuffix)
.join(options.separator + lineBreak)
.thru(text => [options.listPrefix, text, options.listSuffix].join(lineBreak))
diff --git a/src/tools/list-converter/list-converter.types.ts b/src/tools/list-converter/list-converter.types.ts
index 3f9ea3f8..448f1a5a 100644
--- a/src/tools/list-converter/list-converter.types.ts
+++ b/src/tools/list-converter/list-converter.types.ts
@@ -5,6 +5,8 @@ export interface ConvertOptions {
trimItems: boolean
itemPrefix: string
itemSuffix: string
+ removeItemPrefix: string
+ removeItemSuffix: string
listPrefix: string
listSuffix: string
reverseList: boolean
diff --git a/src/tools/list-converter/list-converter.vue b/src/tools/list-converter/list-converter.vue
index 19dd30e5..58c58188 100644
--- a/src/tools/list-converter/list-converter.vue
+++ b/src/tools/list-converter/list-converter.vue
@@ -23,6 +23,8 @@ const conversionConfig = useStorage('list-converter:conversionCo
keepLineBreaks: false,
itemPrefix: '',
itemSuffix: '',
+ removeItemPrefix: '',
+ removeItemSuffix: '',
listPrefix: '',
listSuffix: '',
reverseList: false,
@@ -85,6 +87,19 @@ function transformer(value: string) {
placeholder=","
/>
+
+
+
+
+