有没有人有这个变种?
这是我可以采取一些HTML并显示它而不打破作为文章的摘要引导?
让我免于重新发明轮子!
对不起,新来的,你的权利,应该更好地表达这个问题,还有更多的信息
我希望获取一个html字符串并将其截断为一定数量的单词(甚至是char长度),这样我就可以将它的开头显示为摘要(然后导致主要文章).我希望保留html,以便我可以在预览中显示链接等.
我必须解决的主要问题是,如果我们在一个或多个标签的中间截断,我们最终可能会得到未封闭的html标签!
我有解决方案的想法是
首先将html截断为N个单词(单词更好但chars ok)(确保不要停留在标记的中间并截断require属性)
通过这个截断的字符串中打开的html标签工作(也许我会把它们粘在堆栈上?)
然后处理结束标记并确保它们与我在弹出它们时的堆栈匹配?
如果在此之后有任何打开的标签留在堆栈上,那么将它们写入截断的字符串的末尾,html应该是好的去!
感谢所有评论:)
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.XPath;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace PINET40TestProject
{
[TestClass]
public class UtilityUnitTest
{
public static string TruncateHTMLSafeishChar(string text, int charCount)
{
bool inTag = false;
int cntr = 0;
int cntrContent = 0;
// loop through html, counting only viewable content
foreach (Char c in text)
{
if (cntrContent …Run Code Online (Sandbox Code Playgroud) bbv.Common.StateMachineclass是我见过的最好的状态机代码.但它缺少一件事:获得当前状态.
这是一个订单跟踪系统:
fsm = new ActiveStateMachine<States, Events>();
fsm.In(States.OrderCreated)
.On(Events.Submitted)
.Goto(States.WaitingForApproval);
fsm.In(States.WaitingForApproval)
.On(Events.Reject)
.Goto(States.Rejected);
fsm.In(States.WaitingForApproval)
.On(Events.Approve)
.Goto(States.BeingProcessed);
fsm.In(States.BeingProcessed)
.On(Events.ProcessFinished)
.Goto(States.SentByMail);
fsm.In(States.SentByMail)
.On(Events.Deliver)
.Goto(States.Delivered);
fsm.Initialize(States.OrderCreated);
fsm.Start();
fsm.Fire(Events.Submitted);
// Save this state to database
Run Code Online (Sandbox Code Playgroud)
你可以很容易地看到它的工作原理.
但我想在数据库中保存订单状态.所以我将能够显示订单的状态.
我需要一个
fsm.GetCurrentState()
//show this state in the a table
Run Code Online (Sandbox Code Playgroud)
方法.实际上有一种方法:我可以ExecuteOnEntry在每个州的条目上使用和更改本地值.但ExecuteOnEntry为每个州写作都会很麻烦,因为我会重复自己!
必须有一种微妙的方式来做到这一点.
任何人都可以告诉我如何在XAML中设置TableView.试过 -
<?xml version="1.0" encoding="UTF-8" ?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XYZ.Forms.HardCodedCells">
<ContentPage.Content>
<StackLayout>
<Label Text="Above TableView"></Label>
<TableView>
<TableRoot>
<TableSection Title="Test">
<TextCell Text="Test"></TextCell>
</TableSection>
</TableRoot>
</TableView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)
这个"尝试"在屏幕上呈现空白?
如果我向TableSection添加额外的单元格,比如说EntryCell,我得到 -
"对象类型Xamarin.Forms.TextCell无法转换为目标类型:Xamarin.Forms.View"
顺便说一下,在哪里可以看到每个Forms元素的有效XAML语法?
我正在尝试向ListView中的图像添加点按手势
下面的图像在没有Image.GestureRecognizers部分的ListView中正确呈现,但是使用它,ListView根本不呈现任何内容(没有错误消息). 为了澄清这一点,ListView中还有一个Label,它也不会呈现.
<Image x:Name="newsImage" VerticalOptions="End" HeightRequest="200" WidthRequest="200" Aspect="AspectFill" Source="{Binding Imageurllarge}">
<Image.GestureRecognizers>
<TapGestureRecognizer
Tapped="OnTapGestureRecognizerTapped"
NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
Run Code Online (Sandbox Code Playgroud)
我从http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/gestures/获取此信息(假设此示例不是列表视图图像,但假设它应该在列表视图中工作) .
另外(根据评论建议)
<Image.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding TapCommand}"
CommandParameter="newsImage" />
Run Code Online (Sandbox Code Playgroud)
似乎没有更好的公平.
如果有人有一个如何在后面的代码中添加这个的例子(没有视图模型很好)那么这样做.
已经有一些关于如何创建"自定义控件"的好例子 -
我想创建一个"复合自定义控件或用户控件 ",它包含在XAML中定义的多个元素(在共享代码中),然后使用渲染器进行自定义(比如调整每个平台的样式).
有没有人有这样做的例子呢?具有可绑定标签和输入框的视图的简单示例应足以显示主要原则.
这是我到目前为止 -
定义了一个ContentView来表示我们的用户控件布局和内容.
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="News.Forms.VisualNewsContentView">
<ContentView.Content>
<StackLayout>
<Label x:Name="MyLabel" Text="Label"></Label>
<Entry x:Name="MyEntry" Text="Entry"></Entry>
</StackLayout>
</ContentView.Content>
</ContentView>
Run Code Online (Sandbox Code Playgroud)
代码隐藏 -
public partial class VisualNewsContentView : ContentView
{
public VisualNewsContentView ()
{
InitializeComponent ();
}
// Not sure if I need this to access Entry ...
public Entry GetEntry ()
{
return MyEntry;
}
}
Run Code Online (Sandbox Code Playgroud)
为该ContentView添加Android自定义渲染器,如何访问和自定义ContentView的原生部件/控件?
[assembly:ExportRenderer (typeof(VisualNewsContentView), typeof(VisualNewsRenderer))]
namespace News.Forms.Android
{
public class VisualNewsRenderer: ViewRenderer
{
public VisualNewsRenderer () { } …Run Code Online (Sandbox Code Playgroud) 我正在 Apple 开发者中心为 APNS 创建密钥,我了解以下内容 -
下载和备份 下载密钥后,无法重新下载,因为服务器副本已删除。如果您目前不准备下载密钥,请单击“完成”并稍后下载。请务必将密钥备份保存在安全的地方。
但是,即使我刚刚创建了一个密钥并尝试第一次下载它,我也得到了
“身份验证密钥只能下载一次。此身份验证密钥已被下载。”
有谁知道为什么会发生这种情况?
我有一个.Net Core v2.1 Web API,它使用NSwag生成其Swagger Json。
我有一个这样的响应模型-
public class LoginResponse
{
public LoginResult LoginResult { get; set; }
}
public enum LoginResult
{
AwaitingEmailConfirmation = 0,
Locked = 1,
Failed = 2,
Success = 3
}
Run Code Online (Sandbox Code Playgroud)
生成Swagger JSON的-
"definitions":{
"LoginResponse":{
"type":"object",
"additionalProperties":false,
"required":[
"loginResult"
],
"properties":{
"loginResult":{
"$ref":"#/definitions/LoginResult"
}
}
},
"LoginResult":{
"type":"integer",
"description":"",
"x-enumNames":[
"AwaitingEmailConfirmation",
"Locked",
"Failed",
"Success"
],
"enum":[
0,
1,
2,
3
]
},
Run Code Online (Sandbox Code Playgroud)
当在JSON上运行swagger codegen时,我在IO.Swagger项目中为C#获得了以下LoginResult模型(选择了targetFramework 5.0)-
[JsonConverter(typeof(StringEnumConverter))]
public enum LoginResult
{
/// <summary>
/// Enum _0 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PortableRest从Xamarin Forms对Web API 2.2 Rest服务进行异步调用.
我想我有某种死锁/同步上下文问题,但我无法解决(asbie等新手).
有人可以帮忙吗?
我的控制器测试方法(删除了对数据库的任何调用) -
public IEnumerable<ContentModel> GetTestRest()
{
return new List<ContentModel> {
new ContentModel() {Categoryid = 1, Title = "Title"}};
}
Run Code Online (Sandbox Code Playgroud)
我的单元测试通行证 -
[TestMethod]
public async Task TestRest()
{
MyNewsApiClient MyNewsApiClient = new MyNewsApiClient();
var models = await MyNewsApiClient.TestRest();
int count = models.Count;
Assert.AreEqual(1, count);
}
Run Code Online (Sandbox Code Playgroud)
我的PortableRest Proxy(PCL)方法 -
public async Task<List<ContentModel>> TestRest()
{
var request = new RestRequest();
request.Resource = "Content/GetTestRest";
return await ExecuteAsync<List<ContentModel>>(request);
}
Run Code Online (Sandbox Code Playgroud)
Xamarin Forms ContentPage(PCL) -
public partial class …Run Code Online (Sandbox Code Playgroud) 我可以执行类似的事情 -
单声道--runtime = v4.0.30319 /Library/TeamCity/buildAgent/work/b0d2d3fefe88d393/.nuget/NuGet.exe '安装'/Library/TeamCity/buildAgent/work/b0d2d3fefe88d393/something/packages.config' -源' HTTP: //www.someurl.com/feed/ " -RequireConsent -solutionDir '/库/ TeamCity的/ buildAgent /工作/ b0d2d3fefe88d393 /'
告诉单个Nuget看一个特定的Nuget Source.
但假设由于某种原因我无法修改nuget命令行调用以添加-source参数,我怎么能使用默认配置文件(Windows变量) -
http://docs.nuget.org/consume/command-line-reference#install-command
ConfigFile(v2.5)NuGet配置文件.如果未指定,则将文件%AppData%\ NuGet\NuGet.config用作配置文件.
那么,我可以从这里设置"包源" -
https://docs.nuget.org/consume/nuget-config-settings
这种方法可以在mac上运行吗?
我按照以下方式启动并运行以下SQL Server 2017容器 -
https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
910d34ad3c3e microsoft/mssql-server-linux:2017-latest "/bin/sh -c /opt/m..." 11 minutes ago Up 11 minutes 0.0.0.0:1401->1433/tcp sql1
Run Code Online (Sandbox Code Playgroud)
我可以使用SQLCMD连接docker容器内部.
但是我不确定要在SQL Operations Studio中输入什么来连接它 -
我最近打破了64K referencs 的Dalvik限制(https://developer.android.com/studio/build/multidex.html)
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/ Xamarin.Android.Common.targets:错误:工具退出代码:2.输出:写入输出错误:字段引用太多:77369; max是65536.您可以尝试使用--multi-dex选项.
将一些nugets更新到MonoDroid 7后出错.
当我在android设置中打开MultiDex选项并编译我的项目时,我得到 -
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:错误:工具退出代码:10.输出:错误:无法读取[/ Library/Frameworks/Xamarin. Android.framework/Versions/7.0.1-3/lib/xbuild-frameworks/MonoAndroid/v7.0/mono.android.jar](无法处理类[android/app/ActivityTracker.class](不支持的类版本号[52.0](最大51.0,Java 1.7)))(pjr.mob.android)
我可以看到与此有关的BUG -
https://bugzilla.xamarin.com/show_bug.cgi?id=44187
https://bugzilla.xamarin.com/show_bug.cgi?id=44013
https://bugzilla.xamarin.com/show_bug.cgi?id=33052
https://bugzilla.xamarin.com/show_bug.cgi?id=35491
看起来我必须手动下载并安装ProGuard 5.X,详见这些答案 -
Xamarin.Android Proguard - 不支持的类版本号52.0
并克服由此产生的任何问题.
然而,Xamarin Studio明确地告诉我们,在proguard选项旁边的(i)信息框中,不建议为DEBUG构建运行proguard,并且我们应该在首先尝试proguard之后运行multidex.
这是否意味着启用后我们无法有效调试?但我无论如何都无法进行DEBUG(即使使用我认为可能有帮助的链接器,我甚至无法运行发布版本)现在还没有启用它?
是否有某种Xamarin支持为此或我需要以某种方式减少我们使用的包等(我不确定我可以做,因为大多数是与Google Play服务相关).
任何帮助表示赞赏.
来自Xamarin Studio的其他信息帮助>关于
Java SDK:/ usr java version"1.8.0_112"Java(TM)SE运行时环境(版本1.8.0_112-b16)Java HotSpot(TM)64位服务器VM(版本25.112-b16,混合模式)
我有这个简单的正则表达替换为基础的例程,无论如何要改善它的性能(也许它的优雅?)
public static string stripshrapnel(string str)
{
string newstr = str.Trim();
newstr = Regex.Replace(newstr, @"-", "");
newstr = Regex.Replace(newstr, @"'", "");
newstr = Regex.Replace(newstr, @",", "");
newstr = Regex.Replace(newstr, @"""", "");
newstr = Regex.Replace(newstr, @"\?", "");
newstr = Regex.Replace(newstr, @"\#", "");
newstr = Regex.Replace(newstr, @"\;", "");
newstr = Regex.Replace(newstr, @"\:", "");
//newstr = Regex.Replace(newstr, @"\(", "");
//newstr = Regex.Replace(newstr, @"\)", "");
newstr = Regex.Replace(newstr, @"\+", "");
newstr = Regex.Replace(newstr, @"\%", "");
newstr = Regex.Replace(newstr, @"\[", "");
newstr = Regex.Replace(newstr, @"\]", …Run Code Online (Sandbox Code Playgroud) c# ×4
xamarin ×3
regex ×2
android ×1
async-await ×1
html ×1
macos ×1
mono ×1
nswag ×1
nuget ×1
performance ×1
proguard ×1
sql-server ×1
swagger ×1