Можно использовать массив для замены:
var array = {"from1":"to1", "from2":"to2"}
for (var val in array)
text = text.replace(array, array[val]);
Но что, если необходимо заменить глобально, т.е. текст = text.replace (/from/g, "к");
Массив является довольно большим, таким образом, сценарий займет много места, если я запишу "текст = text.replace (...)" для каждой переменной.
Как можно использовать массив в этом случае? "/from1/g": "to1" не делает работы.
Вы можете использовать крючок мыши низкого уровня. См. В это пример и проверьте на MESAGE WM_MOUSEMOVE в HoodCallback.
Вы также можете использовать класс IMessageFilter, чтобы поймать события мыши и вызвать событие, чтобы получить позицию (Примечание: это только получит позицию над окном, не снаружи этого):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace GlobalMouseEvents
{
public partial class Form1 : Form
{
public Form1()
{
GlobalMouseHandler gmh = new GlobalMouseHandler();
gmh.TheMouseMoved += new MouseMovedEvent(gmh_TheMouseMoved);
Application.AddMessageFilter(gmh);
InitializeComponent();
}
void gmh_TheMouseMoved()
{
Point cur_pos = System.Windows.Forms.Cursor.Position;
System.Console.WriteLine(cur_pos);
}
}
public delegate void MouseMovedEvent();
public class GlobalMouseHandler : IMessageFilter
{
private const int WM_MOUSEMOVE = 0x0200;
public event MouseMovedEvent TheMouseMoved;
#region IMessageFilter Members
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_MOUSEMOVE)
{
if (TheMouseMoved != null)
{
TheMouseMoved();
}
}
// Always allow message to continue to the next filter control
return false;
}
#endregion
}
}
-121--2387567- var array = {"from1":"to1", "from2":"to2"}
for (var val in array)
text = text.replace(new RegExp(val, "g"), array[val]);
Отредактируйте: Как Энди сказал, что вам, возможно, придется избежать специальных символов, используя такое сценарий , этот .
Вот идиома для простых, на основе строки, не требующей REGEXP в JS, поэтому вам не нужно беспокоиться о Regex-специальных символах:
for (var val in array)
text= text.split(val).join(array[val]);
Примечание. Есть проблемы с использованием Объект как поиск общего назначения. Если кто-то обезьяна с объектом прототипом (плохая идея, но некоторые библиотеки делают это), вы можете получить больше Val
S, чем вы хотели; Вы можете использовать Test Test
, чтобы избежать этого. Кроме того, в IE, если ваша строка будет столкнуться с методом объекта
, таких как TOSTRING
, то есть загадочно скрывает его.
Для вашего примера здесь вы в порядке, но в качестве общего случая, когда строки могут быть чем угодно, вам нужно будет работать вокруг него, либо обработая ключевые строки, чтобы избежать столкновений, либо с использованием другой структуры данных Такие как массив [Найти, заменить]
массивов.