Dart:如何截断字符串并在字符编号后添加省略号

Omo*_*o4i 1 ellipsis dart

我想在某个字符长度后将省略号添加到字符串中,如果字符串长度不超过字符预设的字符长度,则不应添加省略号(...)。

如何在Dart语言中实现?

小智 13

您可以replaceRange为此使用方法。

替换范围

  var text = 'Hello World!';
  var r = text.replaceRange(7, text.length, '...');
  print(r); // -> Hello W...
Run Code Online (Sandbox Code Playgroud)

  • 当字符串长度小于 maxChars 时,这不起作用 (2认同)

Sae*_*bil 9

用如下所示的容器包装您的 Text 小部件

请:阅读下面代码中的注释行

class TruncatedText extends StatelessWidget {
@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(),

    body: Container(
      //Here you can control the width of your container ..
      //when text exceeds it will be trancated via elipses...
      width: 130.0,
      child: Text('I have a trancated text',
        style: TextStyle(fontSize: 20),

        softWrap: false,
        overflow: TextOverflow.ellipsis,
      ),
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)

}

编辑:

您可以使用此纯 dart 代码,因为原始解决方案适用于 Flutter

void main() {
  String to_be_truncated = "Dart is excellent but flutter is awesome";
  int truncateAt = to_be_truncated.length-1;//if you use to_be_truncated.lengh no truncation will happen
  String elepsis = "..."; //define your variable truncation elipsis here 
  String truncated ="";

  if(to_be_truncated.length > truncateAt){
     truncated = to_be_truncated.substring(0,truncateAt-elepsis.length)+elepsis; 
  }else{
    truncated = to_be_truncated;
  } 
   print(truncated);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以执行以下操作:

String truncateWithEllipsis(int cutoff, String myString) {
  return (myString.length <= cutoff)
    ? myString
    : '${myString.substring(0, cutoff)}...';
}
Run Code Online (Sandbox Code Playgroud)


Ada*_*aka 5

您可以在字符串上使用扩展:

extension StringExtension on String {
  String truncateTo(int maxLength) =>
      (this.length <= maxLength) ? this : '${this.substring(0, maxLength)}...';
}
Run Code Online (Sandbox Code Playgroud)

然后

'My Very Long Text'.truncateTo(7); // My Very...
Run Code Online (Sandbox Code Playgroud)


Hir*_*age 5

创建extensions.dart 文件。

String truncateString(String data, int length) {
  return (data.length >= length) ? '${data.substring(0, length)}...' : data;
}
Run Code Online (Sandbox Code Playgroud)

使用它作为自定义扩展。

用法

import 'package:project/util/extensions.dart';

truncateString('Sam Trio', 5)
Run Code Online (Sandbox Code Playgroud)