shorten length string ignore Non-Space Characters like arabic diacritic 不切词的字符
shorten length string ignore Non-Space Characters like arabic diacritic Character without cutting words
假设我有这个包含非Space字符的字符串:
thisHُ is a long string I cant display
如您所见,这个“Hُ”包含非 Space 个字符,现在我想缩短字符串,所以我这样做了:
var text = "thisHُ is a long string I cant display"
text =text.replace(/^((.){0,9})(.*)/gm, "");
console.log(text);
这将给出:
thisHُ is
但我不想计算非 Space 字符我想缩短字符串而忽略“计数”非 Space 字符我也想缩短字符串而不切断单词边界。
您可以使用
s.match(/^(?:\s*\S){1,9}\S*/)[0]
s.match(/\S*(?:\S\s*){1,9}$/)[0]
参见regex demo #1 and regex demo #2。
^(?:\s*\S){1,9}\S*
正则表达式匹配一到九次出现的 0+ 空格,后跟字符串开头的单个 non-whitespace 字符,然后是任何 0+ non-whitespace 字符。
\S*(?:\S\s*){1,9}$
正则表达式将匹配 0+ non-whitespace 个字符,然后出现 1 到 9 个单个 non-whitespace 字符,后跟字符串末尾的 0+ 个空格。
JavaScript 演示:
const text = "thisHُ is a long string I cant display";
const startMatch = text.match(/^(?:\s*\S){1,9}\S*/);
const endMatch = text.match(/\S*(?:\S\s*){1,9}$/);
if (startMatch) console.log(`Match at start: ${startMatch[0]}`);
if (endMatch) console.log(`Match at end: ${endMatch[0]}`);
假设我有这个包含非Space字符的字符串:
thisHُ is a long string I cant display
如您所见,这个“Hُ”包含非 Space 个字符,现在我想缩短字符串,所以我这样做了:
var text = "thisHُ is a long string I cant display"
text =text.replace(/^((.){0,9})(.*)/gm, "");
console.log(text);
这将给出:
thisHُ is
但我不想计算非 Space 字符我想缩短字符串而忽略“计数”非 Space 字符我也想缩短字符串而不切断单词边界。
您可以使用
s.match(/^(?:\s*\S){1,9}\S*/)[0]
s.match(/\S*(?:\S\s*){1,9}$/)[0]
参见regex demo #1 and regex demo #2。
^(?:\s*\S){1,9}\S*
正则表达式匹配一到九次出现的 0+ 空格,后跟字符串开头的单个 non-whitespace 字符,然后是任何 0+ non-whitespace 字符。
\S*(?:\S\s*){1,9}$
正则表达式将匹配 0+ non-whitespace 个字符,然后出现 1 到 9 个单个 non-whitespace 字符,后跟字符串末尾的 0+ 个空格。
JavaScript 演示:
const text = "thisHُ is a long string I cant display";
const startMatch = text.match(/^(?:\s*\S){1,9}\S*/);
const endMatch = text.match(/\S*(?:\S\s*){1,9}$/);
if (startMatch) console.log(`Match at start: ${startMatch[0]}`);
if (endMatch) console.log(`Match at end: ${endMatch[0]}`);