输入中有这样一行:
1. qqqq
qqqq
qq
qqqqq
2. www
wwww
www
ww
3. eeee
eeee
eeee
我需要得到一个字符串数组
"qqqq
qqqq
qq
qqqqq"
"www
wwww
www
ww"
"eeee
eeee
eeee"
做这个的最好方式是什么?我试着发明了一个类似的正则表达式,但不是很成功,不知道怎么坚持最后一段[0-9]+\.(?<text>[\s\S]+?)(?=^[0-9]+\.)
输入中有这样一行:
1. qqqq
qqqq
qq
qqqqq
2. www
wwww
www
ww
3. eeee
eeee
eeee
我需要得到一个字符串数组
"qqqq
qqqq
qq
qqqqq"
"www
wwww
www
ww"
"eeee
eeee
eeee"
做这个的最好方式是什么?我试着发明了一个类似的正则表达式,但不是很成功,不知道怎么坚持最后一段[0-9]+\.(?<text>[\s\S]+?)(?=^[0-9]+\.)
有一个带有表单的站点,在这个表单中有几个
我试图通过我的信息控制台自动完成这个表单,我input
使用type="text"
document.getElementById('NAME').value="Олег";
此 e 中的文本input
已更改,但站点忽略了这一点,并使用更改前的内容。同时,如果您手动编辑文本(例如,修改为“Oleg1”),那么网站会感知到这些更改
已经尝试了innerHTML
,等等,和.focus()
(不触发),并通过触发点击事件.dispatchEvent(new MouseEvent('click'))
,没有触发
扔掉网站本身是没有意义的,因为您仍然需要访问表单,但是您对还能做什么的假设是什么?
有一个参与者列表 - 比如说 41 个对象
它们需要以最多 8 人为一组均匀分布。
组的总数是通过41 / 8 + 1
现在您需要在这些组之间分配参与者,如下所示:
1 группа - 7 участников
2 группа - 7 участников
3 группа - 7 участников
4 группа - 7 участников
5 группа - 7 участников
6 группа - 6 участников
但是,“依次添加一个参与者,直到参与者用完”的选项不合适,因为您需要批量添加参与者,即在这种情况下,第 1 组的前 7 个参与者,然后是下一个第 2 组 7 名参与者
当然,您可以先在单独的表格中计算参与者的数量,该表格应该是分组的,然后使用此表格将参与者分成小组进行分组。但是有可能想出一个更优雅的算法吗?
主机上有一个数据库,远程连接是这样的:
static string connectionString =
$"Data Source=**.130.**.233,1433;" +
"Initial Catalog=DB;" +
"User id=sa;" +
"Password=***;";
在这种情况下,应用程序也位于主机上,但在 docker 容器中。如何在它们之间建立本地连接?
现在我有这个命令:
UPDATE Users
SET Coins = Coins + @num,
Сoins_Bought = Сoins_Bought + @num
WHERE Discord_Id = @id;
UPDATE Users
SET Coins = Coins + @numForReferrer
WHERE Discord_Id =
(SELECT Referrer from Users WHERE Discord_Id = @id);
很难用语言解释我需要什么,所以我将大致展示:
UPDATE Users
SET Coins = Coins + @num,
Сoins_Bought = Сoins_Bought + @num
WHERE Discord_Id = @id;
(SELECT Referrer from Users WHERE Discord_Id = @id) AS Referrer_Id
IF Referrer_Id != NULL
UPDATE Users
SET Coins = Coins + @numForReferrer
WHERE Discord_Id = Referrer_Id;
我希望意思很清楚。编写这样一个命令的正确方法是什么?
我需要数学家的帮助,因为正如他们所说,我不是繁荣昌盛
逐帧绘制 180 帧的 GIF,在 GIF 中的轮子,根据想法,最初旋转很快,结果平稳停止,但我不明白如何平滑减速
我举了一个最简单的例子来说明现在是如何发生的。我做了某种旋转加速,在循环结束时,我从文件夹中取出输出图片并将列表翻过来,但现在停止太尖锐了
int totalFrames = 180;
float lastAngle = 0;
for (int frame = 0; frame < totalFrames; frame++) {
Image img = Image.FromFile(...);
Image main = new Bitmap(img.Width, img.Height);
float angle = 0;
if (frame > 15)
angle = (lastAngle + frame / 5f) % 360; << вот тут нужна плавность
lastAngle = angle;
using (Graphics g = Graphics.FromImage(main)) {
g.DrawImage(RotateImage(img, angle), new Rectangle(0, 0, img.Width, img.Height));
main.Save($"out/{frame}.jpg", ImageFormat.Jpeg);
}
}
您需要向其发送POST
请求(或至少获取页面内容以开始)的站点 - http://e96774g6.beget.tech/
我通过浏览器打开它 - 一切正常,从另一台设备 - 一切正常,我通过测试仪发送请求 - 一切正常,我从应用程序发送请求 - 我得到403 forbidden
可能是什么问题呢?
代码(也尝试了另一个):
HttpResponseMessage response = null;
using (HttpClient client = new HttpClient()) {
response = await client.GetAsync(URL);
}
var result = await response.Content.ReadAsStringAsync();
如何显示容器中的应用程序写入控制台的内容?
您不仅需要连接并观看新的输出,还需要获取整个工作时间的输出
有 2 个项目效果很好。一个有这样的一行:
string text = "3.14";
double d = Convert.ToDouble(text);
在第二:
double d = 3.75;
string text = $"bla bla {d} bla"
重新安装 Windows 和工作室后,程序只是停在这些行上,即使没有错误,就好像它是在那里写的一样await Task.Delay(99999999)
。同时,如果您编写string text = $"bla bla 3.75 bla"
它,则一切正常
如何解决这个问题呢?我什至不知道在哪里谷歌它。C#语言
我不明白如何谷歌它,指出你的手指。
有一个公式,数字代入公式。用数字看起来像这样
double qwe = ((100 / (((70 / 1237) * 100) + ((2 / 6) * 100) / 2)) * 0.75)
但是当我运行它时,当我应该得到 3.359 时,我得到一个被零除的错误。怎样成为?
我正在写(注销)样式ScrollBar
。
问题是一个无法理解的空白空间,它等于标准宽度ScrollBar
。如何删除它?
款式:
<Window.Resources>
<Style x:Key="ScrollBarTrackThumb" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Grid x:Name="Grid">
<Rectangle HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Width="Auto"
Height="Auto"
Fill="Transparent" />
<Border x:Name="CornerScrollBarRectangle"
CornerRadius="7"
Background="{TemplateBinding Background}" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Tag" Value="Horizontal">
<Setter TargetName="CornerScrollBarRectangle" Property="Width" Value="Auto" />
<Setter TargetName="CornerScrollBarRectangle" Property="Height" Value="6" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type ScrollBar}">
<Setter Property="Stylus.IsFlicksEnabled" Value="True" />
<Setter Property="Foreground" Value="#ffff8000" />
<Setter Property="Background" Value="#786441A4" />
<Setter Property="Width" Value="7"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ScrollBar}">
<Grid x:Name="GridRoot" Width="{TemplateBinding Width}"
Background="{TemplateBinding Background}"
HorizontalAlignment="Right">
<Track x:Name="PART_Track"
IsDirectionReversed="true"
Focusable="false">
<Track.Thumb>
<Thumb x:Name="Thumb"
Background="{TemplateBinding Foreground}"
Style="{DynamicResource ScrollBarTrackThumb}"/>
</Track.Thumb>
</Track>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ScrollBarBlink}" Value="1">
<Setter Property="Foreground" Value="#ff6441A4"/>
<Setter Property="Background" Value="#ccff8000"/>
</DataTrigger>
<DataTrigger Binding="{Binding ScrollBarBlink}" Value="2">
<Setter Property="Foreground" Value="#ffff8000"/>
<Setter Property="Background" Value="#cc6441A4"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
自己ScrollViewer
:
<ScrollViewer Name="_scrollViewer" VerticalScrollBarVisibility="Visible">
...
</ScrollViewer>
在过去的几个小时里,我一直坐在嘴里拿着计算器,我不明白公式应该是什么样子。
我不知道如何从数学的角度正确表达这个问题,因此,我将作为一个3B班的学生来解释:
我们得到一个从 -many 到 +many 的值。如果值 <250,则返回 2。如果值 >380,则返回 8。如果值是 250< X <380,则需要返回 ~2 到 8 之间的值~,例如,如果X=260,则返回~2.3,如果X=300,则返回~4.9,如果X=360,则返回~7.6。
我发布了一个最小的例子:
static void Main(string[] args) {
for (int i = 240; i < 390; ++i)
Foo(i);
Console.ReadLine();
}
static void Foo(int num) {
const int minPoint = 250;
const int maxPoint = 380;
const double change = 2;
const double change2 = 8;
double result;
if (num < minPoint)
result = change;
else if (num > maxPoint)
result = change2;
else
result = ??;
Console.WriteLine(result);
}
希望问题很清楚。
有一个进程列表
Process[] processes = GetAllProcesses();
如何确定当前在没有任务栏的情况下全屏显示哪个(例如,正在运行的游戏)?
现在我使用这种方法来获取所有进程:
Process[] processes = GetAllProcesses();
如何仅获取任务栏上显示的那些进程?
当我将文本插入单元格时
Excel.Range to = ...
to.Cells[1, 1].Value = "43.64";
然后,由于某种未知原因,插入了 43.64。
同时,如果我插入类似 43.64.78 的内容,那么逗号的点不会改变。
单元格的格式设置为普通和文本,没有区别。
如何解决?
找到这段代码:
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
namespace SetAppVolumne
{
class Program
{
static void Main(string[] args)
{
const string app = "Mozilla Firefox";
foreach (string name in EnumerateApplications())
{
Console.WriteLine("name:" + name);
if (name == app)
{
// display mute state & volume level (% of master)
Console.WriteLine("Mute:" + GetApplicationMute(app));
Console.WriteLine("Volume:" + GetApplicationVolume(app));
// mute the application
SetApplicationMute(app, true);
// set the volume to half of master volume (50%)
SetApplicationVolume(app, 50);
}
}
}
public static float? GetApplicationVolume(string name)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null)
return null;
float level;
volume.GetMasterVolume(out level);
return level * 100;
}
public static bool? GetApplicationMute(string name)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null)
return null;
bool mute;
volume.GetMute(out mute);
return mute;
}
public static void SetApplicationVolume(string name, float level)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null)
return;
Guid guid = Guid.Empty;
volume.SetMasterVolume(level / 100, ref guid);
}
public static void SetApplicationMute(string name, bool mute)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null)
return;
Guid guid = Guid.Empty;
volume.SetMute(mute, ref guid);
}
public static IEnumerable<string> EnumerateApplications()
{
// get the speakers (1st render + multimedia) device
IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator());
IMMDevice speakers;
deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out speakers);
// activate the session manager. we need the enumerator
Guid IID_IAudioSessionManager2 = typeof(IAudioSessionManager2).GUID;
object o;
speakers.Activate(ref IID_IAudioSessionManager2, 0, IntPtr.Zero, out o);
IAudioSessionManager2 mgr = (IAudioSessionManager2)o;
// enumerate sessions for on this device
IAudioSessionEnumerator sessionEnumerator;
mgr.GetSessionEnumerator(out sessionEnumerator);
int count;
sessionEnumerator.GetCount(out count);
for (int i = 0; i < count; i++)
{
IAudioSessionControl ctl;
sessionEnumerator.GetSession(i, out ctl);
string dn;
ctl.GetDisplayName(out dn);
yield return dn;
Marshal.ReleaseComObject(ctl);
}
Marshal.ReleaseComObject(sessionEnumerator);
Marshal.ReleaseComObject(mgr);
Marshal.ReleaseComObject(speakers);
Marshal.ReleaseComObject(deviceEnumerator);
}
private static ISimpleAudioVolume GetVolumeObject(string name)
{
// get the speakers (1st render + multimedia) device
IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator());
IMMDevice speakers;
deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out speakers);
// activate the session manager. we need the enumerator
Guid IID_IAudioSessionManager2 = typeof(IAudioSessionManager2).GUID;
object o;
speakers.Activate(ref IID_IAudioSessionManager2, 0, IntPtr.Zero, out o);
IAudioSessionManager2 mgr = (IAudioSessionManager2)o;
// enumerate sessions for on this device
IAudioSessionEnumerator sessionEnumerator;
mgr.GetSessionEnumerator(out sessionEnumerator);
int count;
sessionEnumerator.GetCount(out count);
// search for an audio session with the required name
// NOTE: we could also use the process id instead of the app name (with IAudioSessionControl2)
ISimpleAudioVolume volumeControl = null;
for (int i = 0; i < count; i++)
{
IAudioSessionControl ctl;
sessionEnumerator.GetSession(i, out ctl);
string dn;
ctl.GetDisplayName(out dn);
if (string.Compare(name, dn, StringComparison.OrdinalIgnoreCase) == 0)
{
volumeControl = ctl as ISimpleAudioVolume;
break;
}
Marshal.ReleaseComObject(ctl);
}
Marshal.ReleaseComObject(sessionEnumerator);
Marshal.ReleaseComObject(mgr);
Marshal.ReleaseComObject(speakers);
Marshal.ReleaseComObject(deviceEnumerator);
return volumeControl;
}
}
[ComImport]
[Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")]
internal class MMDeviceEnumerator
{
}
internal enum EDataFlow
{
eRender,
eCapture,
eAll,
EDataFlow_enum_count
}
internal enum ERole
{
eConsole,
eMultimedia,
eCommunications,
ERole_enum_count
}
[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IMMDeviceEnumerator
{
int NotImpl1();
[PreserveSig]
int GetDefaultAudioEndpoint(EDataFlow dataFlow, ERole role, out IMMDevice ppDevice);
// the rest is not implemented
}
[Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IMMDevice
{
[PreserveSig]
int Activate(ref Guid iid, int dwClsCtx, IntPtr pActivationParams, [MarshalAs(UnmanagedType.IUnknown)] out object ppInterface);
// the rest is not implemented
}
[Guid("77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAudioSessionManager2
{
int NotImpl1();
int NotImpl2();
[PreserveSig]
int GetSessionEnumerator(out IAudioSessionEnumerator SessionEnum);
// the rest is not implemented
}
[Guid("E2F5BB11-0570-40CA-ACDD-3AA01277DEE8"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAudioSessionEnumerator
{
[PreserveSig]
int GetCount(out int SessionCount);
[PreserveSig]
int GetSession(int SessionCount, out IAudioSessionControl Session);
}
[Guid("F4B1A599-7266-4319-A8CA-E70ACB11E8CD"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAudioSessionControl
{
int NotImpl1();
[PreserveSig]
int GetDisplayName([MarshalAs(UnmanagedType.LPWStr)] out string pRetVal);
// the rest is not implemented
}
[Guid("87CE5498-68D6-44E5-9215-6DA47EF883D8"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface ISimpleAudioVolume
{
[PreserveSig]
int SetMasterVolume(float fLevel, ref Guid EventContext);
[PreserveSig]
int GetMasterVolume(out float pfLevel);
[PreserveSig]
int SetMute(bool bMute, ref Guid EventContext);
[PreserveSig]
int GetMute(out bool pbMute);
}
}
需要修复什么?
PS我使用的是Windows 10。
有一个源代码行,其中的文字必须替换为方法执行的结果。因此,如果没有可替换的内容,则不需要执行该方法。
现在我有这个代码:
if (str.Contains("${Time}")) str = str.Replace("${Time}", qq());
if (str.Contains("${Sec}")) str = str.Replace("${Sec}", ww());
if (str.Contains("${Min}")) str = str.Replace("${Min}", ee());
但是看起来很别扭,尤其是有50个这样的换人,你怎么能缩短条目呢?
对我来说,不必写两次“${Time}”就足够了。我再说一遍,如果没有什么可替换的,则不需要执行该方法。
需要在 中RichTextBox
分别插入文字中文字的位置图片,使左右换行。
我目前正在使用这样的东西。
string[] messageSplit = message.Split(' ');
FlowDocument doc = new FlowDocument();
Paragraph paragraph = new Paragraph();
for (int i = 0; i < messageSplit.Length; ++i) {
string str = messageSplit[i];
if (str.Contains("${emoteId=")) {
string id = ...
Image image = new Image();
image.Source = (ImageSource)((new ImageSourceConverter()).ConvertFromString($@"emotes/{id}.png"));
BlockUIContainer cont = new BlockUIContainer(image);
Figure figure = new Figure(cont);
figure.Width = (new FigureLength(24));
figure.WrapDirection = WrapDirection.Both;
figure.VerticalAnchor = FigureVerticalAnchor.PageTop;
figure.HorizontalAnchor = FigureHorizontalAnchor.PageLeft;
paragraph.Inlines.Add(figure);
} else {
paragraph.Inlines.Add(new Run(str));
}
doc.Blocks.Add(paragraph);
MessageText.Document = doc;
但是有了这样的插入,所有被转移到顶部的文本,所有的图片都出现在了底部。
如何正确插入文本?
文本本身看起来像这样qqq ${emoteId=4} www ${emoteId=5} ${emoteId=20} eee
来自“帮助谷歌”系列的问题。
有一个面板,其中有几个元素(比如说按钮)在宽度上被拉伸并从上到下跟随。
我需要添加将一个元素拖放到另一个元素的能力,而且,当用户持有该元素时,其他元素必须提前移动。简而言之,逻辑就像手机桌面上的图标。
我不知道如何用谷歌搜索这样的指南。
知道元素在列表中的位置也非常重要。
它是在 WinForms 还是 WPF 上都没关系。
我能够结交Settings.settings
朋友List<string>
<Setting Name="qq" Type="System.Collections.Generic.List<System.String>" Scope="User">
真的可以用数组键+值来做到这一点吗?试过了SortedDictionary
<Setting Name="ww" Type="System.Collections.Generic.SortedDictionary<System.String,System.String>" Scope="User">
它甚至奏效了..有一段时间。重新启动应用程序后,一切都被重置(当然,我在关闭之前保存了所有内容),并且在文件中user.config
它看起来像这样
<setting name="ww" serializeAs="Xml">
<value />
</setting>
此外,“属性”窗口未打开 - 参数,出现“发现无法理解的字符”之类的错误。很明显,他在逗号处发誓
System.Collections.Generic.SortedDictionary<System.String,System.String>
是否真的可以存储键 + 值数组,还是更容易编写自己的实现?